{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import numpy.linalg as npl\n",
    "import scipy.linalg as spl\n",
    "import sklearn.metrics as sklm\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd #to help see arrays clearly when debugging \n",
    "plt.rcParams['figure.figsize'] = [8, 8]\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 18.1,2 Nonlinear Equations and Least Squares, Gauss-Newton Algorithm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"**Basic Gauss-Newton Algorithm.** Let's first implement the basic Gauss-Newton method (algorithm 18.1 in VMLS) in Julia. In Julia you can pass a function as an argument to another function ,so we can pass f (the function) and also Df (the derivative or Jacobian matrix) to our Gauss-Newton algorithm.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```python\n",
    "def gauss_newton(f, Df, x1, kmax = 10):\n",
    "    x = x1\n",
    "    for k in range(kmax):\n",
    "        x = x - npl.lstsq(Df(x),f(x))\n",
    "    return x\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Here we simply run the algorithm for a fixed number of iterations kmax, specified by an optional keyword argument with default value 10. The code does not verify whether the final x is actually a solution, and it will break down when $Df(x^{(k)})$ has linearly dependent columns. This very simple implementation is only for illustrative purposes; the Levenberg-Marquardt algorithm described in the next section is better in every way.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"**Newton Algorithm.** The Gauss-Newton algorithm reduces to the Newton algorithm when. the function mapps n-vectors to n-vectors, so the function above is also an implementation of the Newton method for solving nonlinear equations. The only difference with the following funciton is the stopping condition. In Newton's method one terminates when $||f(x^{k})||$ is sufficiently small.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "def newton(f,Df, x1, kmax=20, tol = 1e-6):\n",
    "    x = x1\n",
    "    fnorms = [] \n",
    "    for k in range(kmax):\n",
    "        fk = f(x)\n",
    "        fnorms.append(npl.norm(fk))\n",
    "        if npl.norm(fk) < tol:\n",
    "            break\n",
    "        x = x - npl.lstsq(np.vstack([0,Df(x)]),np.vstack([0,fk]))[0]\n",
    "        #using vstacks to make lstsq work on single values\n",
    "    return x, np.vstack(fnorms)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"We added a second optional argument with the tolerance in the stopping condition on line 7. The default value is $10^{-6}$. We also added a second output argument ```fnorms```, with the sequence $f(x^{(k)}||$, so we can examine the covnergencei n the following examples. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Newton algorithm for n = 1.** Our first example is a scalar nonlinear equation f(x) = 0 with\n",
    "\n",
    "$$f(x) = \\dfrac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$$\n",
    "\n",
    "(VMLS figures 18.3 and 18.4).\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = lambda x: (np.exp(x) - np.exp(-x))/(np.exp(x)+np.exp(-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "Df = lambda x: 4 / (np.exp(x) + np.exp(-x))**2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"We first try with $x^{(1)}$ = 0.95.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:9: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  if __name__ == '__main__':\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[4.34519743e-07]])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[7.39783051e-01],\n",
       "       [5.94166364e-01],\n",
       "       [2.30111246e-01],\n",
       "       [8.67002865e-03],\n",
       "       [4.34519743e-07]])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x, fnorms = newton(f,Df,.95)\n",
    "x\n",
    "fnorms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x129b38eb8>]"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x129b9b1d0>]"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Figure 18.1 The first iterations in the Newton algorithm for solving $f(x) = 0$ for starting point $x^{(1)} = 0.95$.')"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fnorms)\n",
    "plt.plot(fnorms, \"o\")\n",
    "plt.title(\"Figure 18.1 The first iterations in the Newton algorithm for solving $f(x) = 0$ for starting point $x^{(1)} = 0.95$.\", fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The method converges very quickly, as can also be seen in figure 18.1. However it does not converge for a slightly larger starting point $x^{(1)} = 1.15$.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:9: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  if __name__ == '__main__':\n",
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: RuntimeWarning: overflow encountered in exp\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n",
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in true_divide\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[nan]])"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[0.81775408],\n",
       "       [0.86640565],\n",
       "       [0.97355685],\n",
       "       [1.        ],\n",
       "       [       nan]])"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x129da97b8>]"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x, fnorms = newton(f,Df, 1.15)\n",
    "f(x)\n",
    "fnorms[:5]\n",
    "plt.plot(fnorms)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 18.3 Levenberg-Mardquardt Algorithm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The Gauss-Newton algorthim can fail if the derviative matrix does not have independent columns. It also does not guarantee that $||f(x^{(k)})||$ decreases in each iteration. Both of these shortcomings are addressed in the Levenberg-Marquardt algorithm. Below is a Julia implementation of algorithm 18.3 in VMLS. This function is included in the Vmls package.*\"\n",
    "\n",
    "*SciPy implementation: https://docs.scipy.org/doc/scipy/reference/tutorial/optimize.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 544,
   "metadata": {},
   "outputs": [],
   "source": [
    "def levenberg_marquardt(f, Df, x1, lambda1, kmax = 100, tol = 1e-6):\n",
    "    n = len(x1)\n",
    "    x = x1\n",
    "    lambd = lambda1\n",
    "    objectives = [] \n",
    "    residuals = []\n",
    "    for k in range(kmax):\n",
    "        fk = f(x)\n",
    "        Dfk = Df(x)\n",
    "        objectives.append(npl.norm(fk)**2)\n",
    "        residuals.append(npl.norm(2*np.matmul(Dfk.T,fk)))\n",
    "        if npl.norm(2*np.matmul(Dfk.T,fk)) < tol:\n",
    "            break\n",
    "        xt = x - npl.lstsq(np.vstack([Dfk,np.sqrt(lambd)*np.eye(n)]),np.vstack([fk,np.zeros((n,1))]))[0]\n",
    "        if npl.norm(f(xt)) < npl.norm(fk):\n",
    "            lambd = .8*lambd\n",
    "            x = xt\n",
    "        else:\n",
    "            lambd = 2.0*lambd\n",
    "    return x, dict([(\"objectives\", objectives),(\"residuals\",residuals)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Line 12 is the second stopping criterion suggested on page 393 of VMLS, and checks whether the optimality condition (18.3) is approximately satisfied. The default tolerance $10^{-6}$ can vary with the scale of the problem and the desired accuracy. Keep in midn that the otpimality condition (18.3) is a necessary condition and does not guarantee that the solution minimizes the nonlinear least squares objective $||f(x)||^{2}$. The code limits the number of iterations to $k^{max}$, after which it is assumed that the algorithm is failing to converge. \n",
    "\n",
    "The function returns a dictionary with information about the sequence of iterates, including the value of $||f(x^{(k)}||^{2}$ and $||Df(x^{(k)})^{T}f(x^{(k)}|||$ at each iteration.\n",
    "\n",
    "**Nonlinear equation.** We apply the algorithm to the scalar function (18.1) with the starting point $x^{(1)} = 1.15$.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:15: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  from ipykernel import kernelapp as app\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12cdda940>]"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12cddad30>]"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'k')"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '$|f|$')"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Figure 18.2 Values of $|f(x^{(k)})|$ versus the iteration number $k$ for the \\n Levenberg-Marquardt algorithm applied to $f(x) = \\\\dfrac{(exp(x) - exp(-x))}{(exp(x)+exp(-x))}$. \\n The starting point is $x^{(1)} = 1.15 and \\\\lambda^{(1)} = 1$.')"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f = lambda x: (np.exp(x) - np.exp(-x))/(np.exp(x)+np.exp(-x))\n",
    "Df = lambda x: 4 / (np.exp(x) + np.exp(-x))**2\n",
    "x,history = levenberg_marquardt(f,Df,np.array([1.15]), 1.0)\n",
    "plt.plot(np.sqrt(history[\"objectives\"][:10]))\n",
    "plt.plot(np.sqrt(history[\"objectives\"][:10]), \"o\")\n",
    "plt.xlabel(\"k\")\n",
    "plt.ylabel(\"$|f|$\")\n",
    "plt.title(\"Figure 18.2 Values of $|f(x^{(k)})|$ versus the iteration number $k$ for the \\n Levenberg-Marquardt algorithm applied to $f(x) = \\dfrac{(exp(x) - exp(-x))}{(exp(x)+exp(-x))}$. \\n The starting point is $x^{(1)} = 1.15 and \\lambda^{(1)} = 1$.\", fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The result is shown in figure 18.2. \n",
    "\n",
    "Note that we defined $x^{(1)}$ as the array [1.15], and use dot-operations in the definitions of ```f``` and ```Df``` to ensure that these functions work with vector arguments. This is important because Julia distinguishes between scalars and 1-vectors. If we call the ```levenberg_marquardt``` function with a scalar argument ```x1```, line 15 will raise and error, because Julia does not accept subtractions of scalars and 1-vectors.\n",
    "\n",
    "**Equilibrium prices.** We solve a nonlinear equation $f(p) = 0$ with two variables, where \n",
    "\n",
    "$$f(p) = exp(E^{s}log p + s^{nom}) - exp(E^{d}log p + d^{nom}).$$ (18.2)\n",
    "\n",
    "Here exp and log are interpreted as element-wise vector operations. The problem parameters are $s^{nom} = (2.2,0.3), d^{nom}=(3.1,2.2),$\n",
    "\n",
    "\\begin{equation}\n",
    "E^{s} = \n",
    "\\begin{bmatrix}\n",
    "   .5 & -0.3 & \\\\\n",
    "    -0.15 & 0.8 \n",
    "\\end{bmatrix}, \n",
    "E^{d} = \n",
    "\\begin{bmatrix}\n",
    "   .5 & 0.2 & \\\\\n",
    "    0 & -0.5 \n",
    "\\end{bmatrix}\n",
    "\\end{equation}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 356,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  app.launch_new_instance()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5.64410853],\n",
       "       [5.26575493]])"
      ]
     },
     "execution_count": 356,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12c689978>]"
      ]
     },
     "execution_count": 356,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12d9d6518>]"
      ]
     },
     "execution_count": 356,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Figure 18.3 Cost function $||f(p^{(k)}||^2$ versus iteration number k \\n for the example of equation (18.2).')"
      ]
     },
     "execution_count": 356,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "snom, dnom = np.array([2.2,0.3]),np.array([3.1,2.2])\n",
    "Es,Ed = np.vstack([[0.5,-.3],[-.15,.8]]),np.vstack([[-.5,.2],[-0.0,-0.5]])\n",
    "f = lambda p: np.vstack(np.exp(np.matmul(Es , np.log(p.ravel())) + snom) - np.exp(np.matmul(Ed , np.log(p.ravel())) + dnom))\n",
    "def Df(p):\n",
    "    p = p.ravel()\n",
    "    S = np.exp(np.matmul(Es , np.log(p)) + snom)\n",
    "    D = np.exp(np.matmul(Ed , np.log(p)) + dnom)\n",
    "    a = np.vstack([np.hstack([S[0]*Es[0,0]/p[0], S[0]*Es[0,1]/p[1]]),np.hstack([S[1]*Es[1,0]/p[0], S[1]*Es[1,1]/p[1]])])\n",
    "    b = np.vstack([np.hstack([D[0]*Ed[0,0]/p[0], D[0]*Ed[0,1]/p[1]]),np.hstack([D[1]*Ed[1,0]/p[0], D[1]*Ed[1,1]/p[1]])])\n",
    "    return a-b\n",
    "p,history = levenberg_marquardt(f,Df, np.vstack([3,9]), 1)\n",
    "p\n",
    "plt.plot(history[\"objectives\"])\n",
    "plt.plot(history[\"objectives\"], \"o\")\n",
    "plt.title(\"Figure 18.3 Cost function $||f(p^{(k)}||^2$ versus iteration number k \\n for the example of equation (18.2).\", fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figure 18.3 shows the plot of $||f(p^{(k)})||^2$ versus iteration number k."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The expression for the derivative is \n",
    "\n",
    "\\begin{equation}\n",
    "Df(x) = \n",
    "\\begin{bmatrix}\n",
    "   \\frac{x_1 - (a_{1})_{1}}{||x - a_1||} & \\frac{x_2 - (a_{1})_{2}}{||x - a_1||} & \\\\\n",
    "    \\vdots & \\vdots \\\\\n",
    "    \\frac{x_1 - (a_{m})_{1}}{||x - a_m||} & \\frac{x_2 - (a_{m})_{2}}{||x - a_m||}\n",
    "\\end{bmatrix}\n",
    ".\n",
    "\\end{equation}\n",
    "\n",
    "This can be evaluated as the product of a diagonal matrix with diagonal entries $\\frac{1}{||x-a_i||}$ and the $5 x 2$ matrix with $i,j$ entry $(x - a_i)_j$.\n",
    "\n",
    "We run the Levenberg-Marquardt method for three starting points and $\\lambda^{(1)} = 0.1.$ The plot is shown in figure 18.4."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 424,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  app.launch_new_instance()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1.18248598],\n",
       "       [0.82422894]])"
      ]
     },
     "execution_count": 424,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[1.18248579],\n",
       "       [0.82422895]])"
      ]
     },
     "execution_count": 424,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[2.98526641],\n",
       "       [2.1215768 ]])"
      ]
     },
     "execution_count": 424,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#\"Five locations ai in a 5x2 matrix.\n",
    "A = np.vstack([[1.8,2.5],[2.0,1.7],[1.5,1.5],[1.5,2.0],[2.5, 1.5]])\n",
    "#Vector of measured distances to five locations.\n",
    "rhos = np.vstack([1.87288, 1.23950, .53672, 1.29273, 1.49353])\n",
    "#dist(x) returns a 5-vector with the distances ||x-ai||.\n",
    "dist = lambda x: np.vstack(np.sqrt((x[0] - A[:,0])**2 + (x[1] - A[:,1])**2))\n",
    "#f(x) returns the five residuals\n",
    "f = lambda x: dist(x) - rhos\n",
    "#Df(x) is the 5x2 derivative.\n",
    "Df = lambda x: np.matmul(np.diag(1/dist(x).T[0]) , np.array([(x[0] - A[:,0]), (x[1] - A[:,1])]).T)\n",
    "#Solve with starting point (1.8,3.5) and lambda = 0.1.\n",
    "x1, history1 = levenberg_marquardt(f,Df,np.vstack([1.8,3.5]),.1)\n",
    "x1\n",
    "x2, history2 = levenberg_marquardt(f,Df,np.vstack([3.0,1.5]),.1)\n",
    "x2\n",
    "x3, history3 = levenberg_marquardt(f,Df,np.vstack([2.2,3.5]),.1)\n",
    "x3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 432,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea71320>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea717b8>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea718d0>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x12ea71b38>"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea71f60>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea7c048>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x12ea7cdd8>]"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Figure 18.4 Cost function $||f(x^{(k)})||^2$ versus iteration number $k$ for the\\n three starting points in the location from range measurements example.')"
      ]
     },
     "execution_count": 432,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(history1[\"objectives\"][:10])\n",
    "plt.plot(history2[\"objectives\"][:10])\n",
    "plt.plot(history3[\"objectives\"][:10])\n",
    "plt.legend([\"Starting point 1\", \"Starting point 2\", \"Starting point 3\"])\n",
    "plt.plot(history1[\"objectives\"][:10], \"o\", color=\"blue\")\n",
    "plt.plot(history2[\"objectives\"][:10], \"o\", color=\"orange\")\n",
    "plt.plot(history3[\"objectives\"][:10], \"o\", color=\"green\")\n",
    "plt.title(\"Figure 18.4 Cost function $||f(x^{(k)})||^2$ versus iteration number $k$ for the\\n three starting points in the location from range measurements example.\", fontsize = 16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 18.4 Nonlinear model fitting\n",
    "\n",
    "\"**Example.** We fit a model\n",
    "\n",
    "$$ \\hat{f}(x;\\theta) = \\theta_1e^{\\theta_2x}cos(\\theta_3x + \\theta_4)$$\n",
    "\n",
    "to $N = 60$ data points. We first generate the data.\n",
    "\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 538,
   "metadata": {},
   "outputs": [],
   "source": [
    "#\"Use these parameters to generate data.\"\n",
    "theta_ex = np.vstack([1,-.2,1*np.pi/5, np.pi/3])\n",
    "M=30\n",
    "xd = np.vstack(np.array([5*np.random.rand(M),\n",
    "                5 + 15*np.random.rand(M)]).ravel())\n",
    "yd = np.vstack(theta_ex[0] * np.exp(theta_ex[1]*xd) * np.cos(theta_ex[2] * xd + theta_ex[3]))\n",
    "N = len(xd.ravel())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 539,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x130914b70>"
      ]
     },
     "execution_count": 539,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "yd = np.vstack(yd.ravel()) * np.vstack((1 + .2*np.random.randn(N)))+.015 * np.vstack(np.random.randn(N))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The 60 points are shown in figure 18.5. We now run our Levenberg-Marquardt code with starting point $\\theta^{(1)} = (1,0,1,0)$ and $\\lambda^{(1)} = 1$. The fitted model is shown in figure 18.5.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 548,
   "metadata": {},
   "outputs": [],
   "source": [
    "theta1 = np.vstack([1,0,1,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 549,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = lambda theta: theta[0] * np.exp(theta[1]*xd) * np.cos(theta[2] * xd + theta[3]) - yd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 550,
   "metadata": {},
   "outputs": [],
   "source": [
    "Df = lambda theta: np.hstack([\n",
    "    np.exp(theta[1]*xd) * np.cos(theta[2] * xd + theta[3]), \n",
    "    theta[0] * (xd * np.exp(theta[1] * xd) * np.cos(theta[2] * xd + theta[3])),\n",
    "    -theta[0] * (np.exp(theta[1] * xd) * xd * np.sin(theta[2] * xd + theta[3])),\n",
    "    -theta[0] * (np.exp(theta[1]*xd) * np.sin(theta[2] * xd + theta[3]))\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 551,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:14: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 1.00941898],\n",
       "       [-0.20369987],\n",
       "       [ 0.61141687],\n",
       "       [ 1.06475081]])"
      ]
     },
     "execution_count": 551,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta, history = levenberg_marquardt(f, Df, theta1, 1.0)\n",
    "theta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 585,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x13608bac8>"
      ]
     },
     "execution_count": 585,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x136012d30>]"
      ]
     },
     "execution_count": 585,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.98, 'Figure 18.5 Least squares fit of a function to $N=60$ points $(x^{(i)}, y^{(i)})$.')"
      ]
     },
     "execution_count": 585,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '$\\\\hatf(x;\\\\theta) = \\\\theta_1e^{\\\\theta_2x}cos(\\\\theta_3x+\\\\theta_4)$')"
      ]
     },
     "execution_count": 585,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.linspace(0,20,500)\n",
    "y = theta[0] * np.exp(theta[1]*x) * np.cos(theta[2]*x + theta[3])\n",
    "plt.scatter(xd,yd)\n",
    "plt.plot(x,y, \"orange\")\n",
    "plt.suptitle(r\"Figure 18.5 Least squares fit of a function to $N=60$ points $(x^{(i)}, y^{(i)})$.\", fontsize=16)\n",
    "plt.title(r\"$\\hatf(x;\\theta) = \\theta_1e^{\\theta_2x}cos(\\theta_3x+\\theta_4)$\", fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "scrolled": true
   },
   "source": [
    "**Orthogonal distance regression.** In figure 18.14 of VMLS we use orthogonal distance regression to fit a cubic polynomial\n",
    "\n",
    "$$\\hat{f}(x,\\theta = \\theta_1 + \\theta_2x + \\theta_3x^2 + \\theta_4x^3$$\n",
    "\n",
    "to $N = 25$ data points. \n",
    "\n",
    "We first read in the data and compute the standard least squares fit.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 609,
   "metadata": {},
   "outputs": [],
   "source": [
    "xd,yd = np.vstack([0.86386309, 0.90618764, 0.20014826, 0.85939524, 0.79595557,\n",
    "       0.33819773, 0.72932294, 0.54275044, 0.43020086, 0.39633836,\n",
    "       0.21374603, 0.13375768, 0.88272295, 0.81474823, 0.74534507,\n",
    "       0.97604522, 0.12427354, 0.63125497, 0.93099425, 0.86551811,\n",
    "       0.50123228, 0.50469551, 0.98376456, 0.84229176, 0.45119254]), np.vstack([ 0.27611492,  0.14607854, -0.17249809,  0.12608163,  0.21116035,\n",
    "       -0.17649459,  0.23701947,  0.11231777, -0.19117909, -0.13786833,\n",
    "       -0.08796589, -0.14053485,  0.22141246,  0.27933879,  0.26250175,\n",
    "       -0.06684589, -0.03550143,  0.20836081,  0.05571696,  0.1038155 ,\n",
    "        0.04986653,  0.04660768,  0.0068115 ,  0.25800022, -0.09535889])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 611,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 0.3275608 ],\n",
       "       [-4.39266679],\n",
       "       [11.04691736],\n",
       "       [-7.09439641]])"
      ]
     },
     "execution_count": 611,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N = len(xd)\n",
    "p = 4\n",
    "theta_ls = npl.lstsq(np.flip(np.vander(xd.ravel(),p),1), yd)[0]\n",
    "theta_ls"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"The nonlinear least quares formulation on page 400 of VMLS has $p + N$ variables $\\theta_1,...,\\theta_p, u^{(1)}, ..., u^{(N)}$. We will store them in that order in the nonlinear least squares vector variable. The objective is to minimize the squared norm of the $2N$-vector\n",
    "\n",
    "\\begin{bmatrix}\n",
    "   \\hat{f}(u^{(1)}; \\theta) - y^{(1)} \\\\\n",
    "    \\vdots \\\\\n",
    "    \\hat{f}(u^{(N)}; \\theta) - y^{(N)} \\\\\n",
    "    u^{(1)} - x^{(1)} \\\\\n",
    "    \\vdots \\\\\n",
    "    u^{(N)} - x^{(N)}\n",
    "\\end{bmatrix}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 644,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    theta = x[:p]\n",
    "    u = x[p:]\n",
    "    f1 = np.matmul(np.flip(np.vander(u.ravel(),p),1), theta) - yd\n",
    "    f2 = u - xd\n",
    "    return np.vstack([f1,f2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 669,
   "metadata": {},
   "outputs": [],
   "source": [
    "def Df(x):\n",
    "    theta = x[:p]\n",
    "    u = x[p:]\n",
    "    D11 = np.flip(np.vander(u.ravel(),p),1)\n",
    "    D12 = np.diag(theta[1] + 2*theta[2]*u.T[0] + 3*theta[3]*u.T[0]**2)\n",
    "    D21 = np.zeros((N,p))\n",
    "    D22 = np.eye(N)\n",
    "    return np.vstack([(np.hstack([D11,D12])),np.hstack([D21,D22])])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"We now call ```levenberg-marquardt``` with these two functions. A natural choice for the initial point is to use the least squares solution for the variables $\\theta$ and the data points $x^{(i)}$ for the variables $u^{(i)}$. We use $\\lambda^{(1)} = 0.01$.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 670,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/vb/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:14: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "sol, hist = levenberg_marquardt(f,Df, np.vstack([theta_ls,xd]), .01)\n",
    "theta_od = sol[:p]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Figure 18.6 shows the two fitted polynomials.\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 684,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x138038da0>"
      ]
     },
     "execution_count": 684,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x137f2c5c0>]"
      ]
     },
     "execution_count": 684,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x137f007f0>]"
      ]
     },
     "execution_count": 684,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x138041550>"
      ]
     },
     "execution_count": 684,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Figure 18.6 Least squares and orthogonal distance regression \\n fit of a cubic polynomial to 25 data points.')"
      ]
     },
     "execution_count": 684,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAH1CAYAAAB82m0HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXd8VUX2wL8nhSSEHmoCGHoXkCIIKqIINkTs2LCxYl31x9rXsnZc0V2xrN0VFkURsIEignQI0sHQS0IRAqGlkDK/P+Y+eHl57+WlvpTz/XzeJ7lzZ+aeO3fu3DNnyhFjDIqiKIqiKJ6EBFsARVEURVHKJ6okKIqiKIriFVUSFEVRFEXxiioJiqIoiqJ4RZUERVEURVG8okqCoiiKoiheCVhJEJGRImJ8/C5w4lzgHPcvPZFLBxFpLiL/FpFFIpLu3EdTH3HjReQzEdnlxN0oIs+JSPUArxXlxN8sIpkisldEvhWRsALSPS8i5WrNqog8JCLDgi2H4h8RSRKRD8rgOl7rQ3msu6WJiNzhrw0pIG2Yk/ZJt7DnRSS7kPnou1kBEZHPRWRzsOVw4fej5IOrgSSPsPXO36VAX2BdcYQKEm2x97YcmAcM8hZJRGoCvziHTwC7gDOBZ4BWwA3+LiIi1YCfgGbAi8AfQAPgQiqmZechYBYwNdiCKOUCrQ+lw7vAt4VMo8+iYvI0UDPYQrgoipKw0hjjVcsxxhwBFhdPpMIjIhHGmMxiZjPbGNPYye8ufCgJwNlAS+B8Y8xsJ+xXEakPPCAitxtjMvxc529AF6CTMSbZLfzr4omvlDQlVK+qBFpWpYsxJon8nbMqS1nWt7Ku28aYLWV1rUAo0Z6rt+EGEQkVkZcck3qaiMwSkY5ezGleTSwiMl9EZnm5xjAR+UhEDgDJbue7O6b7VGcoYL6I9CtIdmNMboC3Wc35e8QjPJXAyvNu4AsPBaFEEZGrRGSJU96pIvKlp9lTRG4QkTkisl9EjorI7yJyo5e8HhKRDU5ZHhSRZSIy1DmXBMQBt7gNPfk0aYtIrIj8V0R2O8Msu51nFeMWp5WI/OjI/qeIvC4id7ubbr2ZY53w1k74jW5hZ4rI1465PV1EEh3TbaRH2vlOeQwTkZUikgmMcrveE07aTBFJFpGxIhLhlj5MRF4Qka0ikiEiB0RknoicVcCzGuLc7x4ROS4ia0XkryIS6hEvSUQ+cZ7bH07cZd7yF5EHRWSHI8fSgmTwSNtBRKaJyGGnvBaJyIUecZ53yrmjiPwsIseAiYHUB7fne1xEtovIkyIS4hGnQBmceDc6zyRDRFaLyCXi0V4U4Z78yid2qPBNEVnnxNkjItNFpF2gZexx3VAReVFOtY+/Ah28xMs33CBFfDdFpK3Y9na7k3aLiIwXkToe+bvi9HDKNU3s0OqdXuRrJSITRGSf845sFZHXPeKcJyKzReSY8/tRRDoGUEYuOfo5zy4da4V1nb/Lef4ZYtuz973cS0MR+UJsW3dIRD4QkSsk//eq1NsBEbnJyfu4UydXi8gdHveb51soInFO+AEn31UiMsIjjmuIq5eI/E9EjohtY99wl7GwFMWSECp5x86NMSbHT/wXgDHAq8BsoCcwrQjX9WQ88D3WvB8JICK9gLlAAnAHkI79KP8iIn2MMStL4Lo/AVuAsSJyN6eGG+4DxvuzIohIS6AJsE1EPsIOb4RjhzceNsasLq5wInIv8C/gI+wQSG3gWWCOiHQzxhxzorYEvgQ2A7nAAOATEYk0xrgak1uAV5z0C4AooCvg+qhfBswElgH/cML+9CPeBOz9/x+2V9QIa7GJcq4XgR3KCQdGAwewz+/qopSFw2nA78DHwDGgE/B3IB7wVIo6AK8DzwHbgRQn/H/ARcDLWEtZJydOc+BaJ84TwP3A48BqbLn3AuoWIF9LbJ36F5DhpHkeqA886RH3PEfGJ4ATTrzvRCTeseIhIn9x7uFDYDLQDvgCqFWAHIhVwuYDh7DlfsS5px9E5CJjzM8eSaY713kRW4eOUHB9+Ab4BPgnMMyJtwP4b2FkEJEhTppvgAeBhsBb2Lbg5HBnEe7Jr3zYuhqFff57se/CPcAiEWlvjPFX/73xPPAI8Bp2aKA3AbSPxXw345x7mowtl9bYetsV8JxPVgf4HFunnsW2q/8RkT+MMfMcWVphh5qPYOvsFuy7cYGbvJdjraXTgRHYDtWjwDwROT2ATlM9YCL2O/IYkObk+xrwAPAGtl1piv3mdBKR/m6dv2lAe6wldytwjZPGG6XWDojIucCnzrUfBkKBjvhpJ8QOcc/FvsOPYdvOm4EJTnv9kUeSCU5ZfQj0ww5fpHCqHhQOY0xAP2AkYLz85rvFucAJ6+8cx2Af5r888vqbE+9Jt7DPgc1erjsfmOXlGpO9xJ0LrAXC3cLCgI3AV4W417ucazT1cb4R9sV0L4d3ASkg3/5O3CPAz9gKN9yR+ZCv67mlf94+Mp/nawFHgf94hLcCsoB7faQLccrpY2C5W/i7wNICZEoCPgmwXNOBu/2cH+2UTy+3sFDsvI2Tz8ORNU/9ccJbO+E3+shfnLQjgRygjkc9ywW6eKQ5z8lzhEf4LU54F+d4BvBloHWsAPmexipI4nYuCfui13YL6+PIcI1bWSUD33nke4MT74MCrv+GU09aeLw/m93rgaseAvcEWh/c0tzkEb4B+KEIMiwFVnmUUW/nGrOKcU9+5fNyX6FANLadu88t/A78tCFOHFf7+JZH+BOe9duRL7s03k2nPAa412cn/HMn7Gy3sEhsW/W2W9hEbJvW2E+93g7M9AivAxwEXitAPpccl3iEt8K+x497hJ/rxL/UOb7YOR7uEe8H3L5XTliptgNYxejPAO53s9vxXz3ldMLnAHuAEI8695RHvBnA+oLqga9fUYYbrsBqRq7f7X7idsVquJM9wr8qwnU9+cb9QESisR/hLwHjmH1cFo9fgHNK4JqISJRzjRhsT/RcrNJzA7Y36A9XeR8FLjPG/GiMmQJcim1oRhdTvH5ADayGGeZWBjuATbiVgYi0c8xvydhGNAv78XQ3my4Deog1r54vAa7e8EMC8IiI3Ccinb2c7wtsM8YscwUYa6XyrD8BIyJ1HJPgViATe58fY59Fa4/om40xazzChmB7+N94lOlPzvmznb/LgMvEmoX7iZ2gGoh8sY55dCennsMz2PoV4xF9gTHmsNuxS9bmzt/TgFhs/XRnMrbhK4hznGtscwUYY7KBSUBP5x1z5xsKz/cex2s5JX9AMohIOHAGVvE3bvGWYi17xbmnguRDRK4TO4xzGMjGWqiiyPvuBIKrffR8XpMCSFvkd1NEIsQOo/zhmO6zgF+d0573cNQ4FgMAYy2lm8lbJhcC040xe31csj22bnq2S8eAJQTWNmdiP+ruuCZ7e+a7AKt8ufLt49yjp4XG13eoNNuBZUADsavjLhGR2n7v2nIOsMMYM98j/HOgMfmfmWcdXoNHHS4MRVES1hpjEtx+iX7iNnH+eprg9hXhup7s8Tiuj72fZznV2Lp+d5G/wS0qo7AVYogxZoIx5jdjzFisonCviHTyk9Zltppv3IYljDHbsR/x7sWUraHzdw75y6ADThmISC2sJaMT1tR5Nlbh+xRn6MbhI+Be4CwnforY8f2iVrirsBX4MWCNM6b3hJwa822C97pRnPryKXAntkc5CHuf9zvnIj3ietYpsGUaiW103Mtzt3PeVa/+gTU9DsP2Rg6IyIciUs+XYGLnHXyHbYCew/bmemHNmd7kO+hxnOkRz/W+5SkvY8wJbO+vIOrhvQz2YnuDdTzCvcX1izHG2z2432cgMjTE9uC9mfY960qh7qkg+UTkCqzZeS1wPXaosRf22Xg+r4Lw+ry8HHujOO/mq9ght8+AS7AWGNeQXkF1Drw/M3+TKl3t0qfkb5eGEFjbvM9dIfTId7uXfKu75dsESDH5h8V9lXOptQPGmF+wQxPx2FUnB0TkJx+dJhf+6rDrvDsFvWOFoihzEgqD68YaAu7KRCMvcTM4NSnQnRjcJia64VlhDjlhb2LHZEqLLsAB58PuzlLnbwd8LwHdjH1gnrKDbbACnTzpC5cSchPWRO/JUedvP+wSzL7GmJOrUZwe2kmcl/Id4B2nkg/GjtX+z8mjUBhj9mHHhe8WkfbArVgz6p/A+9j64m2PDc/6koN9QT3rS57GxuldXQo8YYz5l1u4L2XM23NJwTYM5/pIsxtOfohfAl4SkcbYMeHXsS+nr2WxbbGK4fXGmJO9R+dDVBRc71ue8nJ6MwXNjQDbuDT2Et4YWzZ5FA0vjXZJEIgMWdg60NBLvEaAu7WlUPcUANcBfxhjbnMFiJ0E66lABYL78yqofcxDMd/N64CPjDHuk/+KIr+LFOw8B3/nwXakfvVyPpCVA77eTYDzyT+RHOyQHdhyjhGRUA9FwVc5l2o7YIz5EvhSRGoAA7FzS34UkeY+3qmDeO9Auup1ipdzJUZpr8tfhR2H9px45m0i2g6giXvPS0Takt8k7BVjJ24tBE7HjqsneP6KdAf52QvUF5EWHuFnOn99TsAxdhnNj8A5zrAFAE5ebbCmqOIwHzgOtPJ2/25WH5dpMstNhhhshfYl+0FjzP+wJjp3rTcTZ+JhYTDG/GGMeQSruLjyWwS0EJGebnKF4lFfnBdpl4ccYHtF7kRi67j7fQp2WCVQZmDLK9pHme72TGCM2WuMeR/bIPrrIXh7DtWwE7uKwg5sY3WNR/jVBPauzwX6iUgzN3lCsT2fZcaYtADyKFJ9KIwMxpgs7GTUq5zn6YrXG6v8Fiq/QspXHTvE4M7NFK0tdbWPns/rusJkUoR3Mwq3Oudwa2Gu6cFPwOUi4k1pA7uPzi6go493yNO0X5jrGqCZj3y3O/EWYydDX+6RvjAToku8HTDGHDPGTMd2kJriW5GfC8SLSB+P8BHY79HGQtxHoSlVS4IxJkVE/gWMEZHjnFrd4NLC3XvOX2LHYj8XkTewvYRHOaUNBsKDWFP7DLGrB/ZihyF6WnHM474SOo3Nlc6hS2u7WEQOYk1drnG5j7ETSX4UkRewSkEv7KzepbjtEyEic7CTedq7Xerv2HG478UuEYrCDpEcAN4O5CZF5CovwcnGmEUi8gjwhqPF/ojVsOOwE29+NsZ8gR2zO4bthTyD3bjjKWyPPt7tOh9ie1qLgP3Ysa8RnBqHA9sAnCsil2DNd/uNMTu8yBzjyDMBa+XIxk7arIk1l4I1oT4CTBWRJzi1usFz3BjsuO0jIvIYVrk6B4/G1RhzUEQSgL+JyD7nXu4ggJ6aWx6zRGQydizydU5ZjOKxE6IeNsZsEZHvsBtx/Y5dDnsGdnjjLT/Zr8OaaV8WuxthLnYDHH+rhfzJmiMizwHvil3uNhlrrfgbp6xI/vgn9oM3y6kXR7Grdlpgn0MgBFQfSkCGv2Pr01dOPW2AbT/2krddKYl7cmcG8JbYWfU/Yt/9e/Dek/WL0z6+ia3Hxzm1usHfPC+g2O/mTOA2EVmPXYlwtXPdovIUdthgkYi8hLWYNgMGGWNuNsbkil11NcWxukzG9n4bY4dLthpj3izsRY0xG53n8I6IdAB+wypGzbDzFd4xxswzxvwgIouBD0WkEXZ1w9XY4VYIwIJbUu2A882IwSoOe7BzBe4FErwMdbn4CFtnvxG77Hs3dj7cecDtJvDl+0XDBDjDkVOrG1r7iZNndYM5NXP2ZWwlTccWjmuW/z0e6a/ENpzpwAonP1+rGwb4kKETVuHYj10mtgs79jOkgPtzzZj39pvl5RpfOXmnYzW5V3GbLW9OzZT1tmKjD1Y7TMOaRqdge/8FPYPn/cg41S3epVhl6ahzjU3Y5TDtPcpxJXaYZzO2onrOoL7VkXO/E28rttGt6Rano3OfafiZQY9Vhv7jPN9jzn0vBa7ziNca2xCnY5WW17GNeZ6Z4k5+b2FftCNYM6trtv+NbvFaOvkddfL7FzAU77Oa5/iQPRSrgK52yiHVKbtXgFpOnL9hlb+DjuyJ2A9ZWAHP9AxOTbTahf3Q/cXL/eabqY7vVR4PATsdWZdhG+IkX8/GI20H7DK1w076RcCF3uqhj/Re64OvNHhZ1RSIDE68G7HvXiZ2jsBQ7CStySV1T57yOXXhRWxDnYZtz7p6li8BrG5we4Yvkbd97Oz5XCnBdxOrUH2JrceHsMs7zyT/u/M5sN2LzHnaZLf39gvsxz8Dq3y85hGnH3ZO0iEnzjac97aAMvIqh9v5W7DvXhr2PV8P/BuIdYvTyLnnY859f4LtrBrsxnZl0g44dfQnbLuViX3n38dtZYhnnXPC4pzwFCfdKvKvtHDVuXgvdTvbV/kV9BMnkzJFRK7HLps5yxizqMwFUCoUYjcaeR9rVtRd5xSviMhpWKXhGWPMS8GWRynfiMh7WOtLPWOHsBQvlPbERcTuNHUhtkeTgTX9P4ad4a8KgqIohcaZ9PUqdnnzAeya+UewPUXPzWWUKo6I3IYdttwARGD3qLkDeEkVBP+UupKANf+ch112VhNr8p2I3ZFKURSlKGRj94R4CzvGeww7Jv24satoFMWd49idGVtilYSt2Dlv/wymUBWBoAw3KIqiKIpS/qmIrokVRVEURSkDVElQFEVRFMUrqiQEGRG5TETWiHX/acT6Gpjj7LHgitNNRJ7xt8VvEa/dXqzr1iPOtYeVZP4ljYiMdOT0u8GWiMQ78UaWkWgB4/lsKyLFKd9A7t/J/xmxXlNLBBFpItZlfYJY97z7ReQXEcnnN0CsS27j5efLa2Ag198uIp8UId0wEXmoqNctC0RkgFM+A4qQttzfX1WnLCYuKj4Q6yBkAnanyHuw+zocJf8mL92wngE/x/te6kXldexEnmuwa379+eGoSOzBOovaEmxBKimlXb7x2Po+HzvBrCTogd1l8WPshmfVsO/ZHBEZaoz5ziP+fuyadncK7auiBBiG3dPk9SBcO1B+x9aH9UVIWxHur0qjSkJwicOu+PjSGPObW3hRXrai0AH4zRgzo4yuVyYYu/314gIjKkWigpbvfKCtsR4gARCRmdjNvf6GdbTlzgnj5tdE8Y2xW+JrWVVSdLghSDhbxG53Dj90zHVznHNz3P4fie39AGxyM33G+8k7XKyr0u0icsL5+7w4Dpxc5kFsj+0mV55+8msgIu+JyEYRSRORXSIyUUT8OXVxT99CRP4rIntFJFNEtjrb0brOezVB+zHRxorIVBE5JiIpIjJe8vrC8GoOF5FzReRnx9x8XERWiYjfLXAd2eaLyOUistaR/w8R8dxvHxEZIiKLRCTducZUEfHpPlhEGjvP5wEv555xyrquhxwXiMjvzrm13oaIApHDLb8hIrLSibtCRM4U6wb3RRHZIyIHHfN7tFvafOUrIr1E5CsRSXLySnTyKJQfB8dk7XIC9LNbfR/gnPdbt31hjEl1VxCcsGzsjnkB1eNC3MMDjlwZYoc3zvYSp8B3yqn7twBxbuWw3TkXKSLjnDpwzHm3vhXrOK0g+VzDA1c6z/aQ2CHHCWK3T3ePW0tE3hKR3U7dTxSRB0Xy+MzIN9wQSH0t4P5qiMi/RWSnc919IjIrkPtTSha1JASPD7BbyU7Gbpv5Pd73f//eOf8kdr9x146D/kyfn2KHEF7E9qD6OulbYncYc5kHp2M3ufpHAbLWw26E9RjWDBsLPAwsEJH2xs3ttSdinVctxW6Z+jR2i2jX3upF5XPsFqtvY/ec/zt2o5SRfuS4HPgauwXyX7Ab8HTC+rkviNbY7Zyfwe7zMRqYJCL7jTG/OvkPwT6r2Vizdg2sy9j5ItLNGJPP8ZcxZq+ITHXkcVeaQrH7939pjHH3UtjKifeSI//DWN8F7Y0xm4sgR2tgLPACdp+BV7F1Yjq2bRiJtTaNde77b37KqDn2g/sJdsisE/a5tKRwDot+xw69jcfureJyeuayrhVUtwNGrDOtvthtdj1pKCIHsN4dt2K3NX/N5Hc37Jnn7Vi35J9gtylujd16uKZH1EDeqX9gt1DuxamhD5fHxAgnz+exbUE97PDJYie9y42wP97A+ou4Hutg7kVHjvOcewnB1qUzsM9yDdaJ2uuOXAXtdVNQffV3f+OcsMexbUYMdlvn4nirVIpCUfdz1l/xf9gGxAAjPcLn4LZ/OAH4zXCL69r3/RmP8Ced8NPdwvL5AwhQ7lDsh94AVxQQ9zPsByjWT5w89+sWvt1dPrdyeNcj3hNYp0htneN493LFuuHeDiQAIYW81zlOXn3cwkKxTqrmuYUlYBuzMLewFlhve6/7ebYDnPzPdgsb6uWac5y82riFNXTu+/EiypEFtPRyXc99+acA29yO85SvlzITrJJxI9Z5TkxBz9ojvatMLihq3Q7w2b7oyHe2R/hfsQ51BmKd97zvxPPr+wJrmd0FzPAIv9aRz+e7ho93CqtsJAX4TlbHKmgPBli+nnLe4ISf7xxf6u05Yzs4mUB9j/wGFKG+er0/bAfqdX/3ob+y+elwQ+XDNVv7c49w1/G5RclUREaLNc8fw+52t9M55dOc7nAh8J3x4kq1GHzpcTwJ20D78mTXDmsx+MAUzWPaLuM2Pm1sb3Iy0FtEQhxT/BnAF8bNpG2M2Ya1XPgsc2PMHGwv+S9uwX8BVpv8Y+KbjDGb3NL+ie3hNwcoghwbjTHuEwP/cP7O9Ij3B9DU3cTsiWOWfkVEtmA/IFlYx0GC7aWWBCVWt0VkBHbHvX+YUx5eATDGvGGM+bcxZrYx5gdjzJ3YHvHtIuLvXpo6P8/6+TX53UsX551ypb9GRJaISKqT/jjWchRQei9yTsYqQ32d43Oc4/95xPscO/GzL/7xW18LYBkwUkQeF5GejnVNCQKqJFQ+XMskPYcj9nqcDxgRuQ9r2p+Fde/cG+txESCygOQxnBoiKSk8t911HfsaW3aNsxZVDm/b/O7DNpQNsH7gBe9DQHspuMzfAa4SkRixToqGAO96iedtZUsmp55BYeU45HF8wk94GLa36ouPgbuwwzKDOOVCGQquI4FSInVbRC7D9mA/NMY8HeC1XR/Knn7iNHH+5qkvjsKW4iFDcd4p1z18gfVFMALrxbEXdugi0PL2lPME9tm73qN6wEFjJ6q6E2h5F1Rf/XEf8B7WU+My4E9nDkb1ANIqJYjOSah8uF7MxuRdotbY+ZtC4bkO+MUY87ArwJlrEAgHKHhiWAZQy0u4r0aoEXZWuvsxQL5xfzcZCEAOXzTyEXYC2yhHYc2tjb3Ea0zBZf4Zdtx2JPZDn45dGltYDhVTjiIhIpHA5dhhAPe5FV1K+FLFrtsicj62x/wNea03BSZ1/vrbx96lvOSpL2KXOsd4xC3OO+VKv9kYM9ItfTiF6wR4ylkNW/9c79FBoJ6IVHMUCBfFaUsCwhhzDDtf4zFHcb4KeBn7zj1SWtdV8qOWhIqBS5MPZKb4XOev52SxG5y/v1F4qmPNx+7cGmDan4BLRaSJnzg7gLZOIwWA2E1uPCd7ufBcWXAd1iy61Ef8jdg5CXf4M5n7oZmIuHp5romFVwNLjTG5xpjjwHLganezqNO4ncWpZ+IVY5eQTcB+tG4DJjphhaK4chSDCKyVwbOOjCxifr7qe7Hqtoj0BaZhPUfeWMihpxFYBWGZnzhJ2DkJnvXzSvJ3yAJ9pzLx/t5XJ/8Qxk34t/Z44inn1dhvgss771zn+GqPeDdgP9YlsezR1/2dxBizwxjzT+zEyc4lcE2lEKgloWLgmtl9j4h8im1cVnto9wAYY9aJyP+AZ5wezELs2OFTwP+MMd5mchfEDOAREXkc+yEeiNXsA+Fp7IzohSLyIrAZ26MfYoy50YkzCRgFfOQsi2oBPAQc9pHnxSIyFquA9Hau8ZkxZqO3yMYYIyJ/xU7Amy0i72ItAB2AhgGYnPcBX4jI00660UBb56+Lp7Azwb8TkbexY8PPOvcQiKe5tznVs/U21BAoxZWj0BhjDovIYuBhEdmDtdzcRtEtNxuxH8DbROQg9kOSWJy67Syd+96RbSzQw11fdM3/cBSq/2Lr5GasAnQFVuF5zxjjcwMpY0yuiDwLfCAiHzt5tMb2iD2VvkDfqfXY3vxo7KTUDGPMGif9MBEZh93joQd2NUiqL/m80MlNzrbYVS5zjTG/OOd/xK4geVdEGmCtdxdzysXyAS95Fhav9ycii7CrbNZgJz6fC3TFrm4BQER+AU4zxvjdgVUpJsGeOVmVfwS4usEJexprBsxx0sT7yTccuzRqB1ah2OEch3vEC2h1A1bTfwf7gTyKbZRa4GWmuY/0rbBjugewDf5WYJxHnL9gZ+WnYxv/Hvhe3XAOtkd4DGsSHQ9EucWL91GuA7Fr8I85v1XArQXIPgfbUA7FzrjOxO5Mea2XuEOwvbB07Ed5GtCuoGfrdi4RWOZPDi/hecqokHLM9whzldsdHuHPOOFhvsrXCfvRqR9/Yl04X4L3We9e799LfdiKVRZO5kGAddtLfq664/XnFq8eMNXJN8Mpw9+BewlwZQzWJbErfQLQ3/M5EeA7hV3a+z9ODSVtd8JDnPvejV1ePBfo7q0+eJFvgJPXcOzcjFRHhok4Kxbc4tZynuUerPVgI/Agjgdhj/w8n3OB9dXP/b0CrMDW3+NYZeF+L3V4eyDPRH9F/6mraEXxg9hNnsKMMf1L+TptsasI7jTGfFia11KqNnJqw6pBxphZQRZHKefocIOiBBERaYq1KD2L7a1NDK5EiqIop9CJi4oSXO7A7o7YCBhhjEkPsjyKoign0eEGRVEURVG8opYERVEURVG8Um7nJNSvX9/Ex8cHWwxFURRFKTOWL19+wBjTINhyuCi3SkJ8fDwJCQnBFkNRFEVRygwR2RFsGdzR4QZFURRFUbyiSoKiKIqiKF5RJUFRFEVRFK+U2zkJ3sjKyiIpKYmMjIxgi1KpiIyMpGnTpoSHhwdbFEVRFKUcUSJKgogMAd7EeiD7wBjzssf5u7C+5XOwe+aPMsasz5dRASQlJVGzZk3i4+MpmjM/xRNjDCkpKSQlJdGiRWE81SqKoiiVnWIPNzguaccDFwEdgetFpKNHtInGmC7GmG7Aq8DrRblWRkYGMTExqiCUICJCTEwivsy0AAAgAElEQVSMWmcURVGUfJTEnITewGZjzFZjXRdPAi53j2CMcXeTGo319lUkVEEoebRMFUVRFG+UxHBDHLDL7TgJONMzkojcAzwEVMO67M2HiIwCRgE0b968BERTFEVRFKWolIQlwVs3NJ+lwBgz3hjTCngEeNJbRsaY/xhjehpjejZoUG42nMpDjRo18oUlJiYyYMAAunXrRocOHRg1alQQJFMURVGUkqUkLAlJQDO346bAbj/xJwHvlMB1yw33338/Dz74IJdfbkdZ1qxZE2SJFEVRFKX4lISSsAxoIyItgGTgOmCEewQRaWOM2eQcXgJsopg8++061u8+UnDEQtAxthZPX9ap0On27NlD06ZNTx536dKlJMVSFEVRlKBQ7OEGY0w2cC8wE9gAfGmMWSciz4nIUCfavSKyTkRWYucl3FLc65YnHnzwQQYOHMhFF13EuHHjSE1NDbZIiqIoilJsxJgiLzQoVXr27Gk8HTxt2LCBDh06BEkiS40aNTh27Fi+8N27dzNjxgymTZtGYmIiq1atIiIiIggSFo3yULaKoihVHRFZbozpGWw5XOi2zCVEbGwst912G9OmTSMsLIy1a9cGWyRFURRFKRaqJJQAM2bMICsrC4C9e/eSkpJCXFxckKVSFEVRlOJRoXw3lAfS0tLyTFJ86KGHSEpK4oEHHiAyMhKAsWPH0rhx42CJqCiKoiglgioJhSQ3N9dr+OuvF2mnaUVRFEUpt+hwg6IoiqIoXlElQVEURVEUr6iSoCiKoiiKV3ROgqIoShVi6opkxs5MZHdqOrF1ohgzuB3DuutqLMU7qiQoiqJUEaauSOaxKWtIz8oBIDk1ncemWF8zqigo3lAlQVEUJVgYA4e2w941sG8dHNsLaSmQlQHhkRAeDXVPg5jW0KQb1G8D4s3xbmCMnZl4UkFwkZ6Vw9iZiaokKF5RJaGQJCUlcc8997B+/Xpyc3O59NJLGTt2LNWqVcsXd/v27SxcuJARI6y/q08++YSEhATeeuutIl/ftS307t27uf/++/nqq6+8xktNTWXixIncfffdRb6WoiilQG4ubJ8HG76FjTPh8E4bLiFQvT5UrwdhkZBzAjKPwpovwThLr2vGQquB0PU6iO9faIVhd2p6ocILiw5lVD5USSgExhiGDx/O6NGjmTZtGjk5OYwaNYonnniCsWPH5ombnZ3N9u3bmThx4kkloSSJjY31qSCAVRLefvttVRIUpbyQcRgSPobln8ChbRBeHVoOgP4PQGx3aNABqlXPny47Ew5uhV1LYOsc2DAdVn4OdVtAn7uhxy0QFpifmNg6USR7UQhi60QV584AHcqorFRcJeHHR62JriRp3AUuetnn6dmzZxMZGcmtt94KQGhoKOPGjaNFixY8++yzfPnll3z//fdkZGRw/Phx0tLS2LBhA926deOWW26hbt267N69myFDhrBlyxauuOIKXn31Vb8ibdu2jREjRpCdnc2QIUNOhm/fvp1LL72UtWvXsm7dOm699VZOnDhBbm4uX3/9NU899RRbtmyhW7duDBo0KJ8SoyhKGZFxGBa/C4vH2/9P6w/nPQEdLoXwAD7OYRHQsIP99RgJJ9KsFSLhI/hxDCx4A859BLrfBCH+F6yNGdwuz4ccICo8lDGD2xXzJnUoo7JScZWEILBu3Tp69OiRJ6xWrVo0b96czZs3A7Bo0SJWr15NvXr1mDNnDq+99hrfffcdYIcbVq5cyYoVK4iIiKBdu3bcd999NGvWzOc1H3jgAUaPHs3NN9/M+PHjvcZ59913eeCBB7jhhhs4ceIEOTk5vPzyy6xdu5aVK1eW0N0rilIojIHVX8BPT8HxP6HdJTDgEWjStXj5VqsOXa+F06+BbXPh1xfh2/th5QS47E2rTPjA9bEujSGB0h7KUIJDxVUS/PT4SwtjDOJlDNA9fNCgQdSrV89nHueffz61a9cGoGPHjuzYscOvkrBgwQK+/vprAG666SYeeeSRfHH69u3LCy+8QFJSEsOHD6dNmzaFui9FUUqYg9tg2j2wYwHE9YARk+zfkkTEDle0ONcqIzMeg3fPhguehr73+pyvMKx7XKn07EtzKEMJHrqZUiHo1KkTCQkJecKOHDnCrl27aNWqFQDR0dF+84iIODV2GBoaSnZ2doHX9aaYuDNixAimT59OVFQUgwcPZvbs2QXmqShKKWAMrPgc3u0Pe9fanv3ts0peQXBHxE5kvDcB2g6Gn56ESTdAemrpXdMLYwa3Iyo8NE9YSQ1lKMFDlYRCcP7555OWlsZnn30GQE5ODg8//DAjR46kevX8E45q1qzJ0aNHi3XNfv36MWnSJAAmTJjgNc7WrVtp2bIl999/P0OHDmX16tUlcm1FUQrBiTSYMspaEJp0g9EL7ByCAuYJlBjRMXDt5zD4Jdg0Ez443y6vLCOGdY/jpeFdiKsThQBxdaJ4aXgXnY9QwVEloRCICN988w2TJ0+mTZs2tG3blsjISF588UWv8U8//XTCwsLo2rUr48aN85v3HXfckc9KAfDmm28yfvx4evXqxeHDh72m/eKLL+jcuTPdunXjjz/+4OabbyYmJoZ+/frRuXNnxowZA0C3bt0KeceKogTEoe3w0YWwZrKdlHjLdKjjexix1BCBvnfDLd/C8QPwwSDYXXbzkoZ1j2PBowPZ9vIlLHh0oCoIlQAxxgRbBq/07NnTeH40N2zYQIcOviflKEVHy1ZRikjycphwNeRmw5UfQptBwZbIsj8RPr8S0g/BDV/BaX2DLZESACKy3BjTM9hyuFBLgqIoSlHZPAs+uQyq1YA7ZpcfBQGgQTu4/Weo2RgmXAW7lgVbIqUCokqCoihKUVj1BUy8FmJa2o9x/dYBJZu6Ipl+L8+mxaPf0+/l2UxdkVx6MtZqYoceohvA58Nh94rSu5ZSKalwSkJ5HR6pyGiZKkohWfE5fDMKmveFkT9AzUYBJXPtSpicmo7h1K6EpasoxMLI7yCyDky4Bg7tKL1rKZWOCqUkREZGkpKSoh+1EsQYQ0pKCpGRkcEWRVEqBqu+gGn3Wh8KN3wFkbUCTupvV8JSpXZTuPEryMm08yfKeHmkUnGpUJspNW3alKSkJPbv3x9sUSoVkZGRNG3aNNhiKEr5Z81XMPUuaHE2XDfRemosBEHdlbBBO7h2Avz3CvjyJrjxGwitUJ8AJQhUqBoSHh5OixYtgi2GoihVkY0z7T4IzfvC9ZMC87vgQdB3JWxxNgz9F0wdDbOfg0HPBZRMvTtWXSrUcIOiKEpQSP4dJo+Exp1hxBdQzf/Oqr4oF7sSdhsBPW+DBW9aR1EFEJR5FEq5QZUERVEUfxzaDhOvgej6MGIyRNQsclblZlfCIS9D7Bkw9W5I2eI3atDmUSjlggo13KAoilKmpB2Ez6+CnKxCrWLwR0EOlowxHDx+gr1HMth/NJOsHENOriEiPISY6Go0rBlJo1oRBfp08UtYBFzzGbzbzw6h3DbT5/wE9e5YtVElQVEUxRs52XaIIXUH3DwNGrQtlctk5eSyfMch5m3az6pdh1m7+zCpaVl+09SMDKN945r0jK/HOW0a0OO0ulQLK6RhuE4zuHQcfHUbzPundWPthaDPo1CCiioJiqIo3pj1NGybC5e/DaedVaJZ5+YaFm9L4evlyfy0bi9HM7MJCxE6NKnFRZ0b06ZhTZrUjqRhrQiqhYYSEgIZWTkcPJ7F3sPpJO47yvrdR3j/t628M2cLtSLDuKxrLFf1aEq3ZnUCtzJ0vhISZ8DcV6D1BdA0v7fKMYPb8diUNXmGHNS7Y9VBlQRFURRPVk+GRW9B71HQ/YYSyzb9RA5fLd/FB/O3sSMljZoRYQzp3JjzOzSiX+sYakaGFyq/oxlZLNqSwo9r9/L170lMWLKTM5rX4Z7zWjOwfcPAlIWLx8LORXZp513z7VCEG66hEV3dUDWpUA6eFEVRSp09q+HDCyHuDDvMEFq4D7c3MrJy+HzxDt6es4WDx0/QrVkdbu0Xz+BOjYn0WO1QVI5mZPHNimTem7uV5NR0ujatzd8v60SP0+oWnHjzLOsM6txH4LzHS0QepWiUNwdPqiQoiqK4yDgM751jJyqOmgs1GhQrO2MM363ew8s//kFyajpnt6nPfQPb0Cu+bvEmHvohKyeXb1Yk88+fEtl3JJMrusfx1KUdqRddzX/Cr++Edd/AXfOgoXqEDRaqJASIKgmKopQpxthJfOunwa0/QPM+xcpu18E0npy6lrkb99MpthaPX9yBfq3rl5CwBXM8M5t35mzhvd+2UDuqGq9c2YXzO/hZnXH8ALzVC2Ja29UOIbpCPhiUNyVBa4GiKArA75/CuinW3F4MBSE31/Dh/G1cOO43lm0/yNOXdWT6vf3LVEEAiI4I4/8Gt2PaPf2pX6Mat3+awNPT1nIiO9dHgvow+AVIWgqrJpaprEr5RS0JiqIo+9bD++dZ5eDGb4rci045lsnDk1cxJ3E/A9s35B/DOhNXDpYKZmbn8OqMRD6cv41e8XUZf8MZNKzpxe+EMXY+xqFtcN9yiKxd9sJWcdSSoCiKUp7IyrDDDBE14Yr/FFlBWLQlhYvenMfCLSn84/JOfHhLz3KhIABEhIXy1KUd+df13VmTfJih/15A4t6j+SOKwEWv2KGHua+WvaBKuUOVBEVRqja/vgD7N8Cwd4q0o6Ixhk8WbOOGDxZTIyKMb+4+i5v6xpfaxMTiMLRrLF+PPotcY7j63YUs234wf6S4M+CMm2DJu7B/Y9kLqZQrVElQFKXqsnMxLPw39BgJbQYVOnlWTi5PTl3LM9+u5/wOjZh+X386xZZvE32n2Np8Pfos6teI4MYPljB34/78kQb+HcKrw89/L3sBlXKFKgmKolRNThyHb+6y2xNf+Hyhkx9Oz2Lkx0uZsGQnowe04r0be1AjomLsT9esXnUm39WXVg1qcOdnCczb5KEo1GgA/R6AjT/CjkXBEVIpF6iSoChK1eTnv1sPj8PeKbRnxwPHMrn+P4tZuu0gr13dlUeGtCckxA4vTF2RTL+XZ9Pi0e/p9/LscutSOaZGBBPuOJOW9aO549MEFmw+kDdCn9FQo7HdnrqcTnBXSh9VEhRFqXpsmQ3LPoA+d0N8/0IlTU5N55p3F7H1wDE+uKUXV/VoevLc1BXJPDZlDcmp6Rgn7mNT1pRbRaFudDUm3HEm8THRjPosgbXJh0+drBZtnT7tWgKJPwZPSCWoqJKgKErVIvMYTL8fYtrA+U8VKum2A8e5+p2F7D+Wyee3n8m5bfPuyDh2ZmIeR0gA6Vk5jJ2ZWGyxS4uYGhF8eltvakeFc+sny9h1MO3Uye432c2VfnkWcn3sr6BUalRJUBSlavHri3B4F1z+FoQHvkRxZ0oa1/9nMZnZuUwa1Yee8fXyxdntxaWyv/DyQuPakXx6W28ys3IY+fFSDqc7rqpDw+3mUvv/gA3TgiukEhRUSVAUpeqwewUseQd63FqoXRWTDqVx/fuLyczOYcKdZ/pcwRDrY18EX+HliTaNavL+zT3ZeTCNByatICfXmYfQcRjUbwtzx6o1oQqiSoKiKFWDnGz49gGIbgAXPBNwsr2HMxjx/hKOZmTx39vPpH3jWj7jjhncjigPr45R4aGMGdyuiEKXLWe2jOHpyzoxJ3E/r//sDJGEhMI5Y+DPdZD4fXAFVMocVRIURakaLH0P9qyCIS9DVJ2AkqSmneCmD5dw8PgJPrv9TDrH+d8DYVj3OF4a3oW4OlEIEFcnipeGd2FY97gSuIGy4YYzm3N972aM/3ULM9busYGdhkO9VjD3FV3pUMWoGIt6FUVRikPqLpj9ArS5EDpdEVCSjKwc7vwsgR0paXx6W2+6NQtMsRjWPa5CKQWeiAjPDO3E+j1HGfPVajrF1qZZvepw9sMw7W7YOAPaXRRsMZUyQi0JiqJUfn4YAxi4+DXrn6AAcnIND0xaQcKOQ7x+bVf6toopfRnLERFhobx1fXcwcP+kFWTl5MLp10Cd09SaUMVQJUFRlMrNxp/szoEDHoW6pwWU5Llv1zFz3T6euqQjl54eW8oClk+a1avOy1eezoqdqbz2U6Jd6XD2Q3by59Y5wRZPKSNUSVAUpfKSnQkzHrVr/c8cHVCS/y7ewaeLdnBH/xbc1r9FKQtYvrnk9CZc37sZ//ltq3UG1fV6iG4Ii8YHWzSljFAlQVGUysvid+DgFhjyCoRVKzD6oi0pPDt9HQPbN+SxizuUgYDlnycv6UhcnSj+9tVq0nPDoPedsPln+POPYIumlAGqJCiKUjk5sgd+GwvtLoY2FxQYfWdKGndPWE58/WjevK4boSHlz9VzMIiOCOPVq05n24Hjdtih5+0QFgmL1ZpQFVAlQVGUysmspyHnBAx+ocCoxzKzufOzBHINfHBzT2pGhpeBgBWHs1rV56Y+p/HRgm0k7Bc77LDqCzj2Z6HyqSjOr5RTqJKgKErlY+diWP0FnHUf1GvpN6oxhoe+WMnm/cd4+4YziK8fXUZCViwevag9cXWiGPPVajJ73QU5mbDsw4DTVzTnV4pFlQRFUSoXubnw4yNQMxb6P1Rg9PfnbeWn9ft4/OIO9GtdvwwErJhER4TxypV22OGdtSHQ9iJY9j5kBeaXoiI6v1JUSVAUpbKxZjLsWWm3Xo6o4TdqwvaDvDIjkYs6N+a2fvFlIV2Fpl/r+gztGsvbc7awt9PtkJZiyzsAKqrzq6qOKgmKolQesjJg9j+gSVfocrXfqCnHMrl34gqa1o3ilatORwLYZEmBJy7pQHiI8NjyWpgGHQIecqjIzq+qMqokKIpSeVjyrnUDPegfEOK7ecvNNfz1i5UcTDvB+BFnUEsnKgZMo1qRPDioLb9uPMAfTa+2Vpvk5QWmq+jOr6oqqiQoilI5OJ4C8/4JbQZDy3P9Rh3/62bmbTrAM5d1KtBpk5KfW86Kp22jGjywvi0mvDokfFRgmsrg/Koqog6eFEWpHPz2Kpw4BoOe8xtt+Y5DvPHLJoZ2jeX63s3KSLjKRXhoCM9d3pnr/rOYdfGD6bzma7jweYiq6zddRXd+VRVRS4KiKBWflC2w7APofhM0bO8z2rHMbB78YiWNa0Xy/BWdK908hLLch6BPyxgGd2rEM3v6QHY6rJpUatdSgocqCYqiVHx+eRZCI+C8x/1Ge+7bdSQdSmPctd0q3TyEYOxD8Lch7VmR1Zxd1TvaIQf1DlnpUCVBUZRyS0A9490rYP00OOteqNnYZ14z1u7hy4QkRg9oRe8W9UpR6uAQjH0IWjWowfW9m/HvI+fAgY2wfV6pXUsJDqokKIpSLgm4ZzzbGQvve6/PvPYdyeDRKWs4vWlt/npB29IVPEgEax+CB85vy88h/UgLqQHLPy3VaylljyoJiqKUSwLqGe9YCJtnQb+/QmQtr/kYY+xWwlm5jLu2G+GhlbPZC9Y+BA1qRjDynA58daIvuRu+hfTUUr2eUrZUzrdFUZQKT4E9Y2Pgl39AjUbQe5TPfL5YtovfNu7n8Yvb06qB/x0YKzLB3IfgjrNbMCviAkJyMmHdlFK/nlJ2qJKgKEq5pMCe8ZZfYOdCOPv/oFp1r3H3HE7nhe830KdlPW4487TSErVcEMx9CKIjwjjn3EEk5jbl2JLPSv16Stmh+yQoilIuGTO4HY9NWZNnyOFkz9gYOxehdnPocYvX9MYYHpuyhuxcw6tXdiUkpHItd/RGMPchuKFPPO/NGchf938G+xOhge6kWBkoEUuCiAwRkUQR2Swij3o5/5CIrBeR1SLyi4hUbpVeUZRi47dn/Md3dlXDgEcgLMJr+q+WJzEncT+PDGlH8xjvlgal5IiqFkqDs24i24Swe27BOzAqFQMxxVzXKiKhwEZgEJAELAOuN8asd4tzHrDEGJMmIqOBAcaYa/3l27NnT5OQkFAs2RRFqYTk5sA7/SA3G+5eDKH5DaJ7D2cwaNxcOjSuxaRRfaqEFaE8kJGVw9IXL6SLbKXuE5u8PhvFPyKy3BjTM9hyuCgJS0JvYLMxZqsx5gQwCbjcPYIx5ldjTJpzuBhoWgLXVRSlKrL2a9i/Ac57zOtHyBjDk1PXkJWTy6tXna4KQhkSGR7KiS7XUzf3IH8snBZscZQSoCSUhDhgl9txkhPmi9uBH0vguoqiVDVyc2DOy9CoM3S8wmuUGWv3MmvDnzw8qB3x9aPLWECl/8U3cIhapC7UPRMqAyWhJHhT072OYYjIjUBPYKyP86NEJEFEEvbv318CoimKUqlYOwUOboFzH/HqCvpoRhbPfLuOjk1qcWu/+LKXTyEyMorkuCF0S1vI+m2ltyW0UjaUhJKQBLi7UmsK7PaMJCIXAE8AQ40xmd4yMsb8xxjT0xjTs0GDBiUgmqIolYbcHPhtLDTsCO0v9Rrlnz9t5M+jmbw4vAthlXTTpIpAi/NGEilZJMz8PNiiKMWkJN6iZUAbEWkhItWA64Dp7hFEpDvwHlZB+LMErqkoSlVj/TQ4kAjn/J9XK8KqXal8umg7N/U5jW7N6pS9fMpJoludRWq1xjRP/p6dKWkFJ1DKLcVWEowx2cC9wExgA/ClMWadiDwnIkOdaGOBGsBkEVkpItN9ZKcoipKf3Fz47TWo3xY6Dst3Ojsnl8e/WUODGhH8XxnsMKgUgAjhXa+iX8haJs75PdjSKMWgRNanGGN+AH7wCPu72/8XlMR1FEWpoiR+D3+ug+HvQ0hovtOfLtrBut1HGD/ijErnArqiEt3jOlj2FumrppAyuBcxNbzvZ6GUb3TQTlGU8o0xMPcVqNcKOg3Pd3p3ajqv/5TIgHYNuLiLb1fRShnTqDOZddtwMQv4bNGOYEujFBFVEhRFKd9snAF719i5CF72RXju2/XkGMM/Lu+MiO6JUG4QIaLbNZwZ8gczFyaQ4eHRU6kYqJKgKEr5xWVFqHMadLk63+n5mw4wY91e7hnQmmb1dOvlckfnKwE4+8Q8pq/Kt+hNqQCokqAoSvll8yzro+HshyE071yDrJxcnv12Hc3qRXHnOS2DJKDil5hWmNgzuCZiCZ8s2E5x3QAoZY8qCYqilF/mvQ61mkLX6/Od+u+iHWz68xhPXdKRyPD8kxmV8oF0Hk6b3C0c3buJhB2Hgi2OUkhUSVAUpXyyczHsXAhn3Qth1fKcOnAsk3GzNnJO2wYM6tgoSAIqAdHhMgCuiFjOJwu3B1cWpdCokqAoSvlk/hsQVRfOuDnfqbEzEkk/kcPfL+2okxXLO3XjoUlXrolewYy1e9l7OCPYEimFQJUERVHKH/vWw8Yf4cy7oFpeJ02rdqXy5fJd3NovntYNawRJQKVQdBhK0+PraGgOMGGJLoesSKiSoChK+WPBmxBeHXqPyhOcm2t45tt1xERHcP/5bYIknFJoOl4OwL1N/mDikp1kZutyyIqCKgmKopQvUnfCmsnQYyRUr5fn1NSVyazYmcqjF7Wnpu6sWHGo3wYadOCSsGWkHD/BzHX7gi2REiCqJCiKUr5YNB5EoO89eYLTT+Tw6oxEujatzfDucUESTikyHYdSe38CnetkMmnpzmBLowSIKgmKopQfjqfA8k/h9GuhdtM8pz6Yt5W9RzJ44pKOhIToZMUKR4ehiMnl4WabWLglhe0HjgdbIiUAVElQFKX8sPQ9yE6Hfg/kCf7zaAbvzN3C4E6N6N2ino/ESrmmUSeo15KzTiwkNESYtGxXsCVSAkCVBEVRygeZx2DJe9D+UmiQ193zuJ83cSI7l0cv6hAk4ZRiIwIdhhKxaz6Xtoniq+VJZOXkBlsqpQBUSVAUpXyw4r+QkQr9/ponOHHvUb5YtpOb+p5Gi/rRPhIrFYIOl0FuNqOabOHAsUx+2aATGMs7qiQoihJ8cnNg8dvQrA8065Xn1Is/bKBGRBj3D9QljxWe2DMguiEdji6kSe1IJi7VIYfyjioJiqIEnw3f2qWPZ92bJ/i3jfuZu3E/9w1sQ93oaj4SKxWGkBBoeyEhm2dx3RlNmLdpP7sOpgVbKsUPqiQoihJ8Fo2Hui2g3cUng3JyDS/+sIHm9apz81mnBVE4pURpdzFkHmZEbDIAX/+eFGSBFH+okqAoSnDZtRSSlkKfuyHklDfHKb8n8cfeo/xtSDsiwtTLY6Wh5QAIjaBB8mzOahXDlN+T1YV0OUaVBEVRgsuityCyNnQbcTIoIyuHN2Zt4vSmtbmkS5MgCqeUONWioeW5kPgjw7vFsfNgmrqQLseokqAoSvA4tN3OR+h5G0ScctY0YclOklPTeWRIe/XyWBlpdxEc2sZFTQ5TvVooU3TIodyiSoKiKMFj8bsgodD7LyeDjmZkMf7XzfRvXZ9+resHUTil1Gg7BIDq235mSOfGfLdqDxlZ6vSpPKJKgqIowSE91e6N0PlKqHVqSOGDeds4ePwEYwa385NYqdDUioUmXSFxBled0ZSjmdn8vF73TCiPqJKgKEpwWP4JnDiWx5HTgWOZfDBvKxd3aUzXZnWCJ5tS+rS7GHYtoU8jQ2ztSF3lUE5RJUFRlLInJ8tuwdziHGhy+sngt2ZvJiM7l4cvVCtCpaftEMAQsmUWV5wRx28b9/PnkYxgS6V4oEqCoihlz7pv4Ohu6HvfyaBdB9OYsGQHV/doSqsGNfwkVioFTbpCjUaweRZXdG9KroFpK3cHWyrFA1USFEUpW4yxyx7rt4PWF5wMHjdrIyLCAxfo9stVAhFodT5s+YXW9aM4vWltpq9SJaG8oUqCoihly64lsGcV9LnLbtOLdeL0zYpkRp4VT5PaUUEWUCkzWp8P6Ydg9wqGdo1lTfJhth04HmypFDdUSVAUpWxZ8q7dPOn0a08GjZ2ZSI1qYYw+t1UQBVPKnFYDQUJg8ywuOb0JIvCtWhPKFaokKIpSdhxOhvXT4Yyb7c57wKpdqczasI9R57RUJ05Vjer1IK4HbPqZJrWj6BVfj+mrdus2zeUIVSGqLEgAACAASURBVBIURSk7Ej4Ckwu97jgZNG7WRupUD+fW/i2CKJgSNFpfAMnLIe0gl3WNZfOfx/hj79FgS6U4qJKgKErZkJUByz+26+PrxgOwfMch5iTu5y/ntKJGRFhw5VOCQ+sLAANbZnNx58aEhogOOZQjVElQFKVsWDcF0lLgzFNbML8xayMx0dW4ua+6gq6yxHaHqHqweRYxNSLo17o+367WIYfygioJiqKUPsbA4negQQe7gRKwdNtB5m06wOgBrYhWK0LVJSTUTmDc/Avk5jK0ayy7DqazcldqsCVTAH0zFUUpfXYtgb2r4dJxdn088PrPiTSoGcENZ6oVocrT+gJY+xXsW8OFnTpS7ZsQxv28kS37j7M7NZ3YOlGMGdyOYd3jgi1plUMtCYqilD5L3suz7HHhlgMs3nqQuwe0IqpaaJCFU4JO6/Pt300/UysynHaNavLbpgMkp6ZjgOTUdB6bsoapK5KDKmZVRJUERVFKlyO7Yf006H4TVIvGGMO4nzfSqFYE1/duHmzplPJAjYbQuAtsnQNA0qG0fFHSs3IYOzOxjAVTVElQFKV0cS177H0nAPM3H2DZ9kPce15rIsPViqA4tBxgh6VOpHEoLctrlN2p6WUqkqJKgqIopUlWBiR8DO0ugrrxGGN4/eeNxNWJ4ppezYItnVKeaDkAck7AzkXE1fG+NXesj3Cl9FAlQVGU0mPdFEg7cHLZ45yN+1mxM5V7B7YmIkytCIobzftCSDhsncOYwe0ID5U8p6PCQxkzWF2IlzWqJCiKUjoYYycsNmgPLc7FGMObszYRVyeKq3o0DbZ0SnmjWjQ0OxO2zmFY9zievqzTyVNxdaJ4aXgXXd0QBFRJUBSldNi1FPashN6jQIT5mw+wclcqd5/XivBQbXoUL7QcYJfKHk/hxj6ncVarGFo1iGbBowNVQQgS+qYqilI6LPsAImqdXPb4718206R2pFoRFN+0HGD/bv8NgIs6N2bL/uNs2qe+HIKFKgmKopQ8xw/A+qnQ9TqIqMHirSks3X6Qv5zTUuciKL6J7W4VS2cp5OBOjRGBH9fuDa5cVRhVEhRFKXlWfG5nqve8DYB/z95E/RoRXKf7Iij+CA2D+LNPKgkNa0XSo3ldVRKCiCoJiqKULLm5dm+E0/pDww4s33GIBZtTuOvclrovglIwLQfAoe1wcBsAQzo3ZsOeI+w6mH+DJaX0USVBUZSSZcsvkLoDep2yItSLrsaIM9WKoARAy3Pt321zATi/QyMAftmwL1gSVWlUSVAUpWRZ9gFEN4T2l7E6KZU5ifu54+wWVK+m/uSUAKjfFmo2gS2/AtCifjStG9bgZ1USgoIqCYqilBypO2HjTDjjZgirxr9+2UztqHBu7hsfbMmUioIItDgXts+3e20AF3RoxJKtBzmc7n27ZqX0UCVBUZSSY/kntpHvMZL1u48wa8M+buvXghoRakVQCkF8P7tT537r0GlQx4Zk5xrmbtwfZMGqHqokKIpSMmSfgN8/g7ZDoE4z3vp1EzUjwhjZLz7YkimlzNQVyfR7eTYtHv2efi/PLr5L5/j+9u+O+QB0a1aX+jWqMWu9DjmUNaokKIpSMmyYDsf3Q8/b2bTvKD+u3cstZ8VTOyo82JIppcjUFck8NmUNyanpGCA5NZ3HpqwpnqJQtwXUirNDDkBoiDCwfUN+TfyTrJzckhFcCQhVEhRFKRmWfQh146HVQN76dTNR4aHc1r9FsKVSSpmxMxNJz8rJE5aelcPYmYlFz1TEWhM85iUczchm2baDxRFXKSSqJCiKUnz2rYedC6Hnbew4lM63q3ZzY5/TqBddLdiSKaXM7tT0QoUHTHx/a5k6sBGA/m3qExEWoqscyhhVEhRFKT4JH0FoBHS7kfd+20pYSAh3qBWhShBbJ6pQ4QHjmpewfR4A1auF0b91fWZt2IdxrAtK6aNKgqIoxSPzGKyaBJ2u4M+caL5KSOLKHk1pWCsy2JIpZcCYwe2I8thJMyo8lDGD2xUv47otoGYsbF9wMuiCjo3YdTCdjfuOFS9vJWBUSVAUpXis+RJOHIVet/Phgm1k5+Zy17ktgy2VUkYM6x7HS8O7EFcnCgHi6kTx0vAuxXft7GVewnntGgIwJ/HPYkqtBIouXlYUpegYYycsNu7C4ZhuTFj8K5ecHstpMdHBlkwpQ4Z1jyu+UuCN+P5WCT2wCRq05f/Zu+/4qK47//+vM+qoggrqSAghugDTm3HFuEEcxzGOE3c7Tt0kX+/P3s3upuyunXXKbpodt7jF3Q7uxnawaaYYECB6EVWiCAkJCXXp/v64EkhoJAQazR1p3s/Hg8do7r0z8/EYDZ8553M+JzE6lGGJkXy24xj3XZzl+deTdjSSICIX7uAaOLoZJtzFi6sPUFnboFEE8Zyz6hIALhmWwNp9JzhZo+6L3qAkQUQu3Lq/QnAk1cNu4Jnle5mdE8/I5Gino5K+YsDg5rqE5acPXZJjd19cseu4g4H5DyUJInJhqk/Alr/DmJt4bdMJSk7V8Z3ZQ5yOSvoSY+wWzftXnK5LGJ8eQ2RoIJ/vUItmb1CSIOKHPNJGd9Nr0FBD/bjbeGJpARcN6s/EjP6eD1b826BpUHkUSgsACAxwMSs7ns92HNNSSC9QkiDiZzzSRtey7M2cksfx7tFYCsuq+c7sLIwxPRW2+Kv0afbtgVWnD83OiedYRS1bD590KCj/oSRBxM94pI3uoS/h2Faaxt/OY5/vIWdgJJcOS/BwpCJA3FAI62939Gx2cU48gKYcvEBJgoif8Ugb3XXPQnAEnwfNZNexSu7XKIL0FJcL0qa0GUlIiAxlVEqU+iV4gZIEET/T7Ta61WWw+S2sUTfyhxVHSBsQxrVjkjwYochZ0qdAyW6oPDNycElOAuv2n6C8Skshe5KSBBE/0+02uvmvQ0M1+YlfIe9AGffOyiIwQB8l0oMGNdclHGxbl9BkwbLdmnLoSfrNFvEz3Wqj21KwmJTLo/lhxEUE87WLUns6ZOklPLJqxp2kXAgMhf0rTx/KTbWXQi7bqX4JPUltmUX80AW30S1cD0c3UzTjv1n26XH++aocQs8alRD/1LJqpqUotmXVDND9ls2BIZByERw4kyQEBriYlhXL8t3HsSxLNTE9RCMJItJ16/4KQeH879FcwoMD+MbkQU5HJD7CI6tmOpM+FQ5vhLpTpw/NyI6nsKyavcdPdfJA6Q6PJAnGmKuMMTuMMbuNMQ+6OT/LGLPeGNNgjLnRE68pIl5WcxI2v8mpofN4c8tJFkxKJzosyOmoxEd4ZNVMZ9KngtUIh9aePjQrOw6A5bs15dBTup0kGGMCgD8Bc4ERwAJjzIizLjsA3A681N3XExGH5L8O9VW83HgpBrhzRqbTEYkP6faqmXNJmwiYNlMOg2LDSRsQxjLt49BjPDGSMAnYbVlWgWVZdcArwLzWF1iWtc+yrE1AkwdeT0S8zbJg3V9pTBjFb7dGcF1usuc+/KVP6PaqmXMJjYaBo9okCQAzhsSzak8J9Y3656UneCJJSAEOtrp/qPnYeTPG3GuMWWuMWVtcrGUtIj6jKA+O5LM8+hqq6pq4Z6a2g5a2urVqpqsGTYWDX0Jjw+lDM7PjqKhtYOPBMs+9jpzmidUN7kpKL2jXDcuyngCeAJgwYYJ27hDxFeuexQoM4z/2jmRmdhwjkqOcjkh80AWvmumq9Cmw5gk4mg/J4wCYlhWLMbBs13EmZAzoudf2U54YSTgEpLW6nwoUeeB5RcQX1FZA/hvsS5zDvspA7p2lUQRxSOok+7ZV8WJMv2DGpMaoeLGHeCJJ+BLINsZkGmOCgZuBdzzwvCLiCza/CfWn+G3pNEYkRTFjSJzTEYm/ik6FiER7g7FWZg6JY8PBMk7WqEWzp3U7SbAsqwH4HrAI2Aa8ZlnWFmPML4wx1wMYYyYaYw4BXwP+YozZ0t3XFREvWfcsFdE5vFuawr2zBqtpjTjHGHuVw8E1bQ7PyI6jscli1Z4ShwLruzzScdGyrA+AD8469u+tfv4SexpCRHqTog1QlMfrUfeTHB3GNdrISZyWOhG2vWtv9hRhbxk9Pr0//YIDWL77OFeOTHQ4wL5FHRdFpGPrn6cpIIT/PTaOO2dkEqSNnMRpLXUJhWfqEoIDXUzOHMBy9UvwOP3Gi4h79dWQ/wZr+83ECo3h5knpTkckAsljwRXoZsohnoLjpzh0osqhwPomJQki4t62d6G2nP8tmcytUwYREaL94MQHBIVB4uj2xYvNLZpXaJWDRylJEBH38l6gNDiZtWYEt0/LcDoakTNSJ9o7krZqqpSdEEFcRAgrVbzoUUoSRKS90r2wdynP18xg3tg0BkaFOh2RyBmpk6D+FBRvO33IGMOUwQNYVVCKZakXn6coSRCR9ja8hIXh1bqZap4kvid1gn17Vl3C1KxYjpysYV+J6hI8RUmCiLTV1IiV9yJfkMvwYcPJHhjpdEQibfXPgPD4Np0XAaYMjgXQlIMHKUkQkbYKPsNUFPG3ulkaRRDfZIw95XCo7UjC4LhwEiJDWFWgJMFTlCSISBvW+hcoJ5KjSZcyOVMb5oiPSp0AJbuhqvT0IWMMU7NiWVlQoroED1GSICJnnCrB2v4+bzZM5/ZZOWrBLL4rrf1mT2BPORRX1LKn+JQDQfU9ShJE5Iz813E11fN5vznMHaX2tuLDkseBCWjXL2FqS12Cphw8QkmCiNgsi+o1z7KxaTAzZlxMoFowiy8LDoeBI9vVJQyK7UdSdKjqEjxEnwIiYju8gbDSbSzkEr4+US2YpRdInQiH1kFT4+lDxhimDo5lteoSPEJJgogAULX6WWqsIELG3kR0WJDT4YicW9okqKuA4h1tDk8ZHMvxyjp2Hat0KLC+Q0mCiEB9Na7Nb/BR0yQWXDza6WhEuiZ5vH1btL7N4alZ6pfgKUoSRIS6/LcJbaxkT9pXGBQb7nQ4Il0TOwRCoqAor83htAH9SIkJU12CByhJEBFKlj/NgaZ4Zl7+FadDEek6lwuScu3Nns4yZXAsqwpKaGpSXUJ3KEkQ8XNNJXtJKl3Dsog5TMyMdTockfOTMh6OboaGujaHp2bFcqKqnh1HKxwKrG9QkiDi5w4sfpImyxA34w41T5LeJ3k8NNbZiUIrLXUJqzXl0C1KEkT8WVMjEdtfY7Url0snj3c6GpHzlzzOvj2reDElJoyUmDC+3HfCgaD6DiUJIn7swNr3iWss5uTwBQSpeZL0RjHp0C8WCvPanZqQ0Z81+0rVL6Eb9Kkg4sdKlz/DCSuSKVfd6nQoIhfGGHvKoah98eLEjAEUV9Syv6TKgcD6BiUJIn6q+FgRI8qXsT3hKqKjIpwOR+TCpYyH4u1Q13ZTp0nNu5h+ua/U3aOkC5QkiPipzR8+RbBpIO2y+5wORaR7kseD1QSHN7Y5PCQ+guiwICUJ3aAkQcQP1dQ1kLL3DfYGDyV12ESnwxHpnpTmotuz+iW4XIaJGf1VvNgNShJE/NCSJZ8wlP1YY1WLIH1ARAJEpXZYl7D3+CmOVdQ4EFjvpyRBxM9YlkXtmuepJZjMS77ldDgiHlEUPoxDW1aQ+eD7TH9kMQvzCgGY2FyXsE6jCRdESYKIn1m+7RCz6z7naMqVmLD+Tocj0m0L8wp5pTCOVOsIUVRSWFbNQ2/lszCvkFHJ0YQGuVijuoQLoiRBxM9s/sffiDJVJM2+x+lQRDzi0UU7WNeQCcBo114AqusbeXTRDoIDXYxNi1Hx4gVSkiDiR3YerWDMsXcoD00hKGuW0+GIeERRWTX5TYMBGGP2tDkOMCljAFuLTlJRU+9IfL2ZkgQRP/L3xSuYHrCFoIu+ae+gJ9IHJMeEcZJwCpoSyXUVtDkOMCFjAE0W5B0ocyrEXkufEiK9xMK8QqY/srhdYVZXHa+sJXzbqzRh6Dfpmz0UpYj3PTAnh7CgADZZgxnTnCSEBQXwwJwcAMYP6o/LqKnShQh0OgARObeFeYU89FY+1fWNAKcLswDmj0vp0nO8tHIvXzVLqE67mPDo1B6LVcTbWn4H9r8/jPkNXzAmupo7r5p6+nhESCAjk6NZs1dJwvnSSIJIL/Dooh2nE4QW1fWN/OS1jV0aUaipb2TnyndJMSWET7m9h6IUcc78cSn88JtfA+Cdr0a2S54nZgxgw8Eyahsa3T1cOqAkQaQXaCnAOlujZZ1e6tWZdzYWcVX9p9SH9Iecq3siRBHnJY62b89qzwwwMaM/tQ1NbC486eWgejclCSK9QEsBljstS706YlkWry/dyJUBawkc+3UIDOmJEEWcFxIJA7LcJgkTMuymSmtVl3BelCSI9AIthVkd6WikAWDF7hJGliwimAbMOLVhlj4uKRcOb2p3OD4yhPQB/Vh/QJ0Xz4eSBJFeYP64FB6+YTQBxrg939lIw9PL9nBL0BKaksaeGY4V6auScqH8AFS1HzEYnx7D+gNlWJblQGC9k5IEkV5i/rgUfnNTbrsRhdZLvc62+1gFxbvWMJT9uMZr2aP4gaQx9u2R9qMJ4wf1p7iilkMnOh55k7aUJIj0Ii0jCikxYRggJSaMh28Y3eEyyGdW7GNB0FKswFAYdaN3gxVxQmKufeumLmF8ur1XiaYcuk59EkR6mfnjUrrUG6H0VB3vry/g34K+wAy/HsJivBCdiMPCYyE6zW1dwrDESMKCAsg7UMa8sV3rL+LvNJIg0ke9tHo/FzeuJqypElSwKP4kcYzbkYTAABdjUqM1knAelCSI9EG1DY08t3I/90V+ATGDIGOm0yGJeE9SLpTshtrKdqfGD+rP1qKT1NSrqVJXKEkQ6YPe23iYkMqDjKzNs0cRtJmT+JOkXMCCo5vbnboovT8NTRabDpV7P65eSJ8cIn2MZVk8vXwv90WuwsLA2FucDknEu1pWOLiZchiXbtfmaMqha5QkiPQxqwpK2X64jBtcn2OyLgVt5iT+JjIJwuPdFi/GRoSQEduP9fuVJHSFkgSRPubp5QVc1W874TVHVLAo/smYDosXwV4Kuf7ACTVV6gIlCSJ9SEFxJf/Yfowf9l8FYf1h2DVOhyTijKRcKN4GDbXtTo0b1J/jlXUcLFVTpXNRkiDSh/x1xT7iXacYWrYUxmgzJ/FjSbnQ1ADHtrY7NV51CV2mJEGkjyirquONdYf4l7R8TGOdphrEv3VSvJgzMJJ+wQFKErpASYJIH/HymoNU1zdwVf0noM2cxN/1z4SQaLfFi4EBLsamxShJ6AIlCSJ9QH1jE899sY9vpJ8gtGQbaDMn8XfG2KMJnRQvbjtcQVVdg5cD612UJIj0AR/kH+bIyRruj1oJ2sxJxJY4Bo5ugcb2icD4QTE0qqnSOSlJEOnlLMviqWV7GRYXSMqh90CbOYnYknKhoRpKdrU7NS7N3hFyw8Eyb0fVqyhJEOnlvtx3gvzCcv4taw+mplwFiyItEkfZt0fat2fuHx7MoNh+bFSS0CklCSK93NPLC4jpF8SU8o+0mZNIa3FDwRXkdg8HgDGpMUoSzkFJgkgvtr/kFB9vPcp3cgMJ2LdEmzmJtBYQBPHDOkwSclOjKSqv4djJGi8H1nvo00SkF/vrin0Eugy3hCwHDOQucDokEd+SOMrtdAPA2DS7dmejihc7pCRBpJcqr67ntbUHuX7MQCK2vgpZl0JMmtNhifiWgSOh8gicOt7u1MjkaAJcRlMOnVCSINJLvfrlAarqGvl+ZhGcPKSCRRF3BjYXL7qZcggLDiBnYCQbDylJ6IiSBJFeqL6xiWdX7GPq4Fgy9r+lzZxEOtLSebSDKYfcNLt4UTtCuqckQaQX+nDzEYrKa/j2pBjY/p42cxLpSHgcRAy0myq5kZsazcmaBvaVVHk5sN5BSYJIL2NZFk8vK2BwXDgzaz4HbeYk0rmBo+BovttTuS3Fi6pLcEtJgkgvs27/CTYeKueO6Rm48l7UZk4i55I4Cop3QGN9u1PZCRGEBQWo82IHlCSI9DJPLdtLTL8gbkwpsb8daTMnkc4NHGWPuB1v3545MMDF6JRoFS92QEmCSC9yoKSKRVuP8I3J6YTlv9S8mdNXnQ5LxLd1ssIBIDctmi1FJ6lraOrwKRbmFTL9kcVkPvg+0x9ZzMK8wp6I1OcoSRDpRf76xV4CXYZvTRgIm15v3sypv9Nhifi2uGwICIYjHdcl1DU0seNIhdvzC/MKeeitfArLqrGAwrJqHnor3y8SBSUJIr1EeXU9r315kOvGJDOw8BOoLddUg0hXBARBfE4nKxzs4sUNHUw5PLpoB9X1jW2OVdc38uiiHZ6N0wcpSRDpJV798gCn6hq5c0YmrH8e+mfAoBlOhyXSOwwc3eF0Q2r/MAaEB7Opg+LForLq8zrelyhJEOkFGpqbJ00ZPIBRYSWwbxmM1WZOIl02cCRUHoXK4nanjDHkpnZcvJgcE3Zex/sSj3zCGGOuMsbsMMbsNsY86OZ8iDHm1ebzq40xGZ54XRF/0dI86e4ZgyHvb2BcMPYWp8MS6T0SW4oXO65L2HWsksrahnbnHpiTQ1hQQJtjYUEBPDAnx+Nh+ppuJwnGmADgT8BcYASwwBgz4qzL7gJOWJY1BPgd8Kvuvq6Iv7Asi6eWFZAZF86lQ2Nhw0uQdRlEpzgdmkjvcXqFQwd1CWkxWBbku9kRcv64FB6+YTQpMWEYICUmjIdvGM38cX3/dzDQA88xCdhtWVYBgDHmFWAesLXVNfOAnzX//AbwR2OMsdQsW+ScWpon/XL+KFwFi6GiCOY+4nRYIr1LeBxEJHa8h0Nz8eKmQ2VMzYptd37+uBS/SArO5onphhTgYKv7h5qPub3GsqwGoBxo93/BGHOvMWatMWZtcXH7eSMRf/T08r1EhwXx1fEpkPc89IuDoXOdDkuk90kc1WHx4oDwYFJiwsgvbD+S4M88kSQYN8fOHiHoyjVYlvWEZVkTLMuaEB8f74HQRHq3AyVVLNpiN0/qV18GOz6E3JshMNjp0ER6n4Ej7fbMDXVuT49KiWKzkoQ2PJEkHALSWt1PBYo6usYYEwhEA6UeeG2RPu2vX+wlwGW4bVoGbHwFmhpgnHojiFyQgaOhqR6O73R7enRKNPtKqjhZ036PB3/liSThSyDbGJNpjAkGbgbeOeuad4Dbmn++EVisegSRzp2ssZsnXTsmmYGRIZD3AqROhIRhTocm0jsNbK6pL97u9vTIlGgAthSe9FZEPq/bSUJzjcH3gEXANuA1y7K2GGN+YYy5vvmyp4FYY8xu4MdAu2WSItLWq2sOcqqukbtmZMKhtfYHm0YRRC5cbDa4AuHYVrenRzcnCZpyOMMTqxuwLOsD4IOzjv17q59rgK954rVE/EFDYxN/XbHXbp6UEg3vPA9B/WDUDU6HJtJ7BQZD7BA4ts3t6biIEJKiQ1W82IratYn4oDbNk2orYfNbMPIrEBLpdGgivVvC8A5HEgBGpURrJKEVJQkiPsayLJ5avtdunjQsAbYuhLpKTTWIeELCCDixD+pOuT09OiWaguOnqFDxIqAkQcTnrD9wgo0Hy7hzegYul4H1L9hzqelTnA5NpPdLGG7fdlC82FKXsKVIxYugJEHE5zy1rLl50kWpULwTDq6CcbeCcdduRETOS0LzCocO6hJGqXixDSUJIj7kYKndPOmWyen0Cw60lz2aAMhd4HRoIn1D/wwIDO0wSYiPDCExSsWLLZQkiPiQZ1bsxWUMt03NgMZ62PgyDL0KIgc6HZpI3+AKgPgcFS92kZIEER9RXlXPq18e5PrcZBKjQ2HnIjhVDONVsCjiUQkjOhxJgDPFi+62jfY3ShJEfMSLq/dTVdfIPbMG2wfyXrR3rRtyhbOBifQ1CcOh4jBUud8dYHRqFJYFW1W8qCRBxBfUNjTy7Bf7mJkdx/CkKKg4Ars+hrELIMAjPc9EpEVC5+2ZRyXbxYuqS/DHJMGy7CVluz91OhKR097eUERxRS33towibHgJrEYYe6uzgYn0RS3LIDuoS0iICiUhMkR1CfhjkmAMLPsNrHvW6UhEAGhqsnhyaQHDk6KYMSTOTmTzXoT0aRA3xOnwRPqeqBQIiTpnXYJGEvwxSQBImwwH19gfxiIOW7KzmF3HKrl3VibGGNj/BZTuUcGiSE8xprk9c8dJwqiUaPYUV3LKz4sX/TRJmASVR6Fsv9ORiPDE0gKSokO5dkyyfSDvBQiOhBHznA1MpC9r2cOhgy+Lo1Oi7eLFw/5dvOi/SQLYowkiDso/VM7KghLunJ5JUIALqstgy0IYfSMEhzsdnkjflTACqk/YXxjdGJ2qzovgr0lCwggIjoCDq52ORPzcE8sKiAwJ5OZJafaB/NehoRouus3ZwET6unMVL0aGEBsezDaNJPghVwCkTlCSII46WFrFB/mHWTA5ncjQIHvYc92zkDgGksc5HZ5I33aOPRyMMYxIjvL7jZ78M0kAu3jx6BaorXA6EvFTz6zYiwHumJ5hHyhcD0c3w0W3OxiViJ8Ij4Pw+E7bM49IjmLX0UrqGpq8GJhv8eMkYRJYTVC4zulIxA+1bsGcFB1mH1z/LAT1g9FfczQ2Eb9xjhUOI5KiqGtsYk9xpReD8i3+mySkTACMihfFES0tmO+e2dw8qbYC8t+EkTdAaJSzwYn4i4QRcGw7NLkfKRiZbP8u+nN7Zr9LEhbmFTL9kcVk/nwFe0waR7cscTok8TOtWzCPaP4QIv8NqD+lqQYRb0oYbv/elR9wezozLoLQIJdfL4P0qyRhYV4hD72VT2FZNRawun4IYUfXs3D9QadDEz/ydt5ZLZgB1j9nf6tJneBcYCL+Jn6YfVu8w+3pAJdhWGKURhL8xaOLdlBd33j6/rqmoUSZKt746B8ORiX+pKnJ4ollrVowAxzeCEV5MP42uxOciHhH3FD7toMkAWhe4VCO5acdev0qSSgqq25zf52VDUDaqXwnwhE/tGRnMbtbt2AGtCanbwAAIABJREFUWPccBIbCmJucDU7E3/QbAOEJnScJSVGcrGmg8Kx/P/yFXyUJyTFhbe7vsxIpsSKZEVrgUETib/6ydE/bFsx1p+wGSiPm2R9YIuJd8TlwvPORBPDf4kW/ShIemJNDWFBAqyOGDeQwS0mCeMGmQ2WsKig904IZYMvfofakPdUgIt4Xn2OPJHQwnTA8MQqX8d89HPwqSZg/LoWHbxhNSkwYBkiJCSNx5CwiT+2DUyVOhyd93F+W2C2Yv97SghnsqYbYbBg0zbnARPxZ/DA7Ua847PZ0WHAAmXHhfjuSEOh0AN42f1wK88elnDmwPxS2/hYOrYGcuc4FJn3a3uOn+GDzYe6/OIuo0CD74NGt9t+7K/9TBYsiTonPsW+Ld0BUsttLRiRHs37/CS8G5Tv8aiTBreRx4AqEA6ucjkT6sCeW7iEowMUd0zPPHFz/HLiCIHeBc4GJ+Lu4VklCB0YkRVFYVk15Vb2XgvIdShKCwiBprJIE6TFHT9bw5rpCbpqQSnxkiH2wvgY2vgLDr7N7yIuIMyISIDSma8WLfliXoCQB7PngovVQ759LXKRnPbN8Lw1NTdw7M+vMwW3vQE2ZtoQWcZoxZ4oXOzAiSUmCfxs0HRrrtNmTeFx5VT0vrtrPtWOSSY/td+bEumehfwZkzHIqNBFpcY4kIT4yhITIEL8sXlSSAJA+GTCw/wunI5E+5sXV+zlV18i3L241inB8F+xfAeO/BS79Coo4Li4Hqo53usptRHKURhL8Vlh/GDjK/uAW8ZCa+kaeWb6X2TnxZzZyguaCxUAYe6tzwYnIGS17OHRWl5AUxa6jFdQ2NHZ4TV+kJKHFoGn2ttGN/le9Kj3j9bUHKTlVx/2tRxHqayDvbzD0Kogc6FxwInJGfMseDts7vGREchQNTRa7jlZ6KSjfoCShxaCpUF9lb7Yj0k0NjU38ZWkB49NjmJTZqt3ytneguhQm3uVccCLSVlQqBIVD8c4OLxmZHA34X/GikoQW6c0d7zTlIB7wfv5hDp2o5v7ZQ85s5ATw5dMwYDBkznYsNhE5i8tljyZ0MpKQPqAfYUEBbFOS4KciB0LsEBUvSrdZlsVjn+8hOyGCy4YlnDlxdAscXAUX3aGCRRFfE5cDxzseSQhwGXISI5Uk+LVB0+DASmhqcjoS6cU+31HM9iMV3HdxFi5Xq1GEtc9AQAiM/YZzwYmIe/E5cLIQajpOAoYnRbHtcAVWB5tB9UVKElobNB1qyuHYVqcjkV7ssc/3kBwdyvW5rfrA11bCxldh5HwIj3UuOBFxr2UPh05GE4YnRVJeXc+RkzVeCsp5ShJaa9mJT1MOcoHW7itlzb5S7p45mODAVr9e+a9DXQVMUMGiiE9qWQbZSVOl3NQYZmbHcarWf5ZBKkloLSYdotNUvCgX7M+f76F/vyBubr0dtGXB2qftXhxpk5wLTkQ6FjMIAoI7LV7MTYvhhbsmMyQhwouBOcvvkoTGJou/5x1i+a7j7i8YNA32Lbc/2EXOw+bCchZvP8ZdMzLpF9xqF/ZDa+FIPky4Q1tCi/iqgECIze50usEf+V2S4DLw20928syKve4vyJhpt+c8ts27gUmv96fPdhMZGsi3pmW0PbH2GQiOgDFfdyQuEemicyyD9Ed+lyQYY7h8+ECW7z7OqdqG9hdkNm+4s2+ZdwOTXm3n0Qo+3HyE26dlEBUadOZEVSlseQvG3AQhkc4FKCLnFj8MTuzXjsCt+F2SAHDFiIHUNTSxbFdx+5P9B9lzU3uXej8w6bX+/Nlu+gUHcMf0zLYnNr4MDTUw4U5nAhORrosbClj2JmzAwrxCpj+ymMwH32f6I4tZmFfobHwO8MskYVLGAKLDgvh461H3F2TOtOsSmvynglUu3N7jp3hnYxG3ThnEgPDgMycsy55qSJ0EiaOdC1BEuiaueQ+Hkl0szCvkobfyKSyrxgIKy6p56K18v0sU/DJJCAxwcemwBBZvP0ZDo5vGSZkXQ02ZXWwmcg6Pfb6boAAXd888axRh7xIo2a1RBJHeIjYLMHB8N48u2kF1fdsvitX1jTy6qOMlkn2RXyYJYE85lFXVs27/ifYnM2bat5pykHM4dKKKt9YXsmBSOgmRoW1Prn3G3oZ85FecCU5Ezk9QGMSkwfGdFJW5r0vo6Hhf5bdJwqyh8QQHuPjE3ZRDVJK9FEbFi3IOf1lSgDFw76zBbU9UHIHt79stmINC3T9YRHxPbDaU7CI5Jszt6Y6O91V+myREhAQyNSuWT7Yddd+HO3OW3Xmxsd77wUmvcPRkDa+uPciNF6W2/+BY/wI0NWiqQaS3icuG47t54MqhhAUFtDkVFhTAA3NyHArMGX6bJIA95bC/pIpdxyrbn8ycBXWVUJTn/cCkV3hiaQGNTRb3Xzyk7YnGBlj3LAye3TzHKSK9Rlw21J9ifpbh4RtGkxIThgFSYsJ4+IbRzB+X4nSEXhV47kv6ritGDOSnCzfzydajDB141hr21nUJaqUrZymprOVvq/czLzeZ9Nh+bU/u+ABOHoK5jzgTnIhcuNhs+7ZkF/PHzfa7pOBsfj2SMDAqlNzUaD7ecqT9yfBYu9e+ihfFjaeX76W2oYnvXOJmpGDNE/YeIEPnej8wEemeuOYkoblXgr/z6yQBYM6oRDYeKqfQXcVq5iw4uBrq/WdbUDm3sqo6nl+5n6tHJTEk4awRqKNb7YLXiXfZveBFpHeJTLLbqCtJAJQkMHdUEgAfbXYzmjB4tt0t7+Aqr8Ykvu3JZQVU1jbw/cuGtD+55gkICIFx3/J+YCLSfcZA7BAoUZIAShLIjAtneFIUH+Yfbn9y0HRwBcGexd4PTHxS6ak6nl2xj2tGJzEsMartyeoy2PQqjP6aPV0lIr1T8woHUZIAwNWjEll34ARHT541rRASAelTlCTIaU8uK6CqvpEfXp7d/uSGv0F9FUy6x/uBiYjnxGZD+QGoq3I6EscpSQDmjk7EsmCRuwLGwbPt9syVbjaDEr9SUlnLc1/YowjtVsM0NcGaJyFtMiSPdSZAEfGMluLF0j3OxuEDlCQAQxIiyU6I4AN3Uw5Zl9q3BZ97NSbxPU8u20t1fSM/vMzNKMLuT+HEXph0r/cDExHP0gqH05QkNJs7Ook1e0sprqhteyIpF8IGaMrBz5VU1vL8yn1cNyaZ7LNHEQDW/AUiBsLw670em4h42IDmpc1KEpQktLh6dCJNFny89awpB1eAPeWwZ7G99a8XaA9z3/PE0gJq6hv5gbtRhOO77ZGECXdCYHD78yLSuwT3g+h0rXBAScJpOQMjGRwX7n4pZNalUHkEjm3r8Ti0h7nvOV5Zy/Mr93N9bjJDEiLaX/DlU/YqmIvu8H5wItIz4oZoJAElCacZY5g7OpEv9pRQUnnWlEPWJfatF6YctIe57/nLkj3UNnQwilBbaa9qGDEPIgd6PzgR6Rmx2VCy22sjyL5KSUIr145JprHJ4oOzRxOiUyFuKBR81uMxaA9z33KsooYXVu1n/tgUBse7GUXY9ArUnoTJ93k/OBHpOXHZ9iZ/FW4K2v2IkoRWhiVGMnRgBO9uKGp/MutS2Leix1s0aw9z3/L45wXUN1p8390ogmXZyx6TxkLqRO8HJyI9RyscACUJbRhjuD43mTX7Stvv5ZB1KTRUw4EvejSGB+bkaA9zH1FYVs2Lq/bz1fEpZMaFt79g7xIo3m4vezTG+wGKSM9ptRukP1OScJbrcpMBeG/jWaMJGTPtnvy7PunR158/LkV7mPuI339qfzj88PKh7i9Y+WfoFwejvnr6kFamiPQRUckQFO73Iwnapu4sg2LDGZsWwzsbi7jv4lbbAAf3g8yZsOtjuOrhHo1h/rgUJQUO21NcyRvrD/GtqYNIcTfVc3wX7FoEFz8IQaHAmZUpLYWnLStTAP3/FOltjNEKBzSS4Nb1uclsKTrJ7mOVbU9kz7GrXUvUqrOv++0nOwkJdPHdS9zs9Aiw6jEICLa3hG6mlSkifUxstqYbuvNgY8wAY8wnxphdzbf9O7juI2NMmTHmve68nrdcOyYJl4F3zp5yyL7Cvu3hKQdx1ubCct7fdJi7ZmQSFxHS/oKqUtjwEoy+CSISTh/WyhSRPiYuG8oOQr3//g53dyThQeAflmVlA/9ovu/Oo8A3u/laXpMQFcqUwbG8u7EIq/Ua2QGZdma5a5FzwUmP+/XHO4gOC+KeWYPdX7Dur3YR69TvtDmslSkifUxcNmD59ehxd5OEecBzzT8/B8x3d5FlWf8AKrr5Wl41b2wye4+fYtOh8rYnhs6Bfcuh7pQzgUmPWrO3lM93FHP/7CyiQoPaX9BQZy97HDwbBo5sc0orU0T6mJY9HPx4N8juJgkDLcs6DNB8m3CO63uNq0YlERLo4s31h9qeyL4CGuugYIkzgUmPsSyLRxdtJyEyhNumZri/aOtCu7nKlO+2O6WVKSJ9TGxzklCy29k4HHTO1Q3GmE+BRDen/tXTwRhj7gXuBUhPT/f005+X6LAgrhyZyDsbi/jXa4YTEtj8DTF9GgRH2Kschl3taIziWZ/vKObLfSf45fxRhAUHtL/AsmDlH+0ppyGXu30OrUwR6UNCIu3dXUsKnI7EMeccSbAs63LLska5+fM2cNQYkwTQfHusO8FYlvWEZVkTLMuaEB8f352n8oivjk+hrKqez7a3+s8KDLaHmnd97Pc9vfuSpiaLRxftIH1AP74+Ic39Rfu/gMMbYcr94NLCIBG/MCBL0w3d8A5wW/PPtwFvd/P5fMrM7HgGRoXwxrqzphyGzoGThXBsqzOBice9u6mIrYdP8qMrsgkO7ODXYtWfIaw/5C7wbnAi4pzYLL+ebuhukvAIcIUxZhdwRfN9jDETjDFPtVxkjFkGvA5cZow5ZIyZ083X9YoAl2H+uBQ+21FMcUWrnSGHNC+F3PGhM4GJR9XUN/I/H+1gZHIU83I7mCooLYDt78OEO+3GWiLiH2Kz4FQx1Jx0OhJHdCtJsCyrxLKsyyzLym6+LW0+vtayrLtbXTfTsqx4y7LCLMtKtSyr16whvHF8Ko1NFm9vaNVeNyoJksfDjg+cC0w85vmV+ygsq+Zfrh6Oy9XBHgyr/wKuQJh4j1djExGH+fkKB02snkP2wEhyU6N5c/1ZPfiHXQOF6+Ckf28j2tuVVdXxx8W7mZ0Tz/Qhce4vqj4BeS/CqBvsBFFE/Edsc9dVP+2VoCShC268KJVth0+ypahVz4Rh19q3Gk3o1f6weDeVtQ08NHd4xxd9+bS9r/y073svMBHxDQMy7VslCdKR63KTCQ5w8dqXB88cjM+xh6G2v+9cYNItB0qqeH7lPr52URo5iZHuL6qvgdWPQ9ZlkDjaq/GJiA8ICoOoVE03SMdi+gUzd3Qib+UVUl3XvIGPMXafhL1Loaa88ycQn/Q/i7YT6HLx4ys72AoaYONLdtHSjH/yXmAi4lv8eIWDkoQuumVSOhU1Dby3qdWmT8OuhaZ6bfjUC204WMZ7mw5zz8xMBkaFur+oqRG++AMkj4OMmd4NUER8R2yWphukc5MyB5AVH85Law6cOZg6EcLjVZfQy1iWxX+/v424iGDuvTir4wu3v2cvfZz+Q3vkSET804AsqCmzd4D1M0oSusgYw4JJ6eQdKGPb4eb1sq4AyJkLOz+GhtrOn0B8xoebj7BmXyk/umIoESEddCa3LFj+v9A/E4Zf790ARcS3+PEKByUJ5+Gr41MJDnTxcuvRhGHXQl0F7FvmXGDSZTX1jfzX+9sYlhjJzRM72R9k33IoWm+vaHC52cdBRPyHH2/0pCThPPQPD+bqUYn8fX2rAsbMiyEoHLa952xw0iVPLi2gsKya/7huJAEdNU4CWPF/9lTS2Fu8F5yI+KaYQWBcfrnCQUnCeVowKZ2K2gbebSlgDAq193LY/h40NjgbnHTqcHk1f/58D1ePTmRqVmzHFx7ZDLs/gcn32cufRMS/BQZDTLqmG+TcJmUOYEhCBC+s3I/VsgvkyPn2Mrn9K5wNTjr1qw+302hZnTdOAvji9/bo0IS7vBOYiPi+2CGabpBzM8Zw27QM8gvLWX/ghH1wyBX2Pypb/u5scNKhdftLWbihiPtmDSZtQCcbNJUWQP4bMOEO6DfAewGKiG8bkGV/PrR8OfQTShIuwA3jUogMDeSvK/bZB4L7Qc5VsO0dTTn4oKYmi5+/u5XEqFDun93JkkewVzS4AmHq97wTnIj0DrFZdnv2ymNOR+JVShIuQHhIIDdPTOPDzUc4XF5tHxwxH6pKYP9yZ4OTdt5cf4hNh8p5cO4w+gV3sOQRoPwQbHgJxn9TGzmJSFt+usJBScIF+tbUDJosi7+tal4Oma0pB19UXlXPrz7azvj0GOaNTe784hW/Byy7eZKISGt+umW0koQLlDagH5cPH8hLaw5QU99oV8HnzIWtmnLwJY9+vJ3SU3X8Yt4oTGddEyuPwfrnYMzNdhWziEhr0WngCvK7FQ5KErrhjukZlJ6q452NzcshR86H6lLYt9TZwASAjQfL+NvqA9w2LYNRKdGdX7zyj9BYBzN+5J3gRKR3CQi0t43WdIN01dTBseQMjOSZ5Xvt5ZBDLofgCNiy0OnQ/F5jk8VPF24mPiKEH1/RyS6PYPdj//JpGHkDxA3xToAi0vu0rHDwI0oSusEYw90zM9l+pIIlO4tbTTm8DQ11Tofn115ctZ/8wnL+7doRRIYGdX7x6sftquWZP/FOcCLSO8U2JwlNTU5H4jVKErpp3tgUkqJDeXxJ8zzVmK/bu4Xt1vbRTjlWUcOvF+1gZnYc1445xyqFmnI7SRh2LQwc4Z0ARaR3is2Chho4Weh0JF6jJKGbggNd3DUjk1UFpeQdOAGDL4F+cbDxFadD81v/9f42ahubzl2sCLDmSTtRmPX/vBOciPReCSMgdRLUnXI6Eq9RkuABCyalEx0WZI8mBATC6Bth50dQXeZ0aH7ni93HeXtDEfdfnEVmXHjnF9eUwxd/gOwrIXmcdwIUkd4rfQrc/QkkDHM6Eq9RkuAB4SGB3DZ1EB9vPcruY5X2lENjHWxVAaM3Vdc18tDf88mI7deus+LCvEKmP7KYzAffZ/oji1mYVwirHrenhi75F4ciFhHxbUoSPOS2aRmEBLp4Yuke+1tpbDZses3psPzK7z7dyf6SKh6+YQyhQQGnjy/MK+Sht/IpLKvGAgrLqnn4rZXUL/+DXYugUQQREbf8Pklw+w3zAsRGhPD1CWn8Pa+QQ2XV9mjC/hVwYr+HIxZ3Nh4s46llBdwyOb3dNtCPLtpBdX1jm2O3Wu8S1FABsx/yZpgiIr2KXycJ7r5hPvRW/gUnCvddnIXB8KfP9sCYr9kH81/3XMDiVl1DE//8xiYSIkN5cG77ucKisuo29/tzkjsCPuK9ximQOMpbYYqI9Dp+nSS4+4ZZXd/Io4t2XNDzJceEcfOkNF5fe5CDVgKkT4VNr/rd1qLe9tjne9hxtIL/nD+KKDc9EZJjwtrcvy/wPfpRy0tht3grRBGRXsmvk4Szv2Ge63hXfGf2EFwuwx8W77KnHI7vhMJ1F/x80rmdRyv442e7uD43mctHDHR7zQNzcghrrlGIp4zbAj7mPWs6N8293Juhioj0On6dJJz9DfNcx7siMTqUb0xO5831hexPngtB/eyNg8Tj6hub+MlrG4kMDeI/ruu4EdL8cSk8fMNoUmLC+HbguwSZBsKu+Bfmj0vxYrQiIr2PXycJrb9htggLCuCBOTndet77Z2cRFGD4v+VH7P0A8t+E2opuPae094fFu8kvLOe/5o8iNiKk02vnj0thxXeGcVfIYgLH3sIVM6d7KUoRkd7Lr5OE1t8wDZASE8bDN4zu9jfMhMhQvjllEAvzCjmUeSPUn4LNb3kmaAFgw8Ey/vTZbm4Yl8Lc0edovdxiya/AaoKLH+jZ4ERE+ohApwNw2vxxKT0y7Pzti7N4ec1Bfr4hgifjcmD983DRbR5/HX9UXdfIj1/dwMDIEH42b2TXHlS8E9a/ABPvhv4ZPRqfiEhf4dcjCT0pNiKE+2dn8cm2Y+zLuBEK18LRLU6H1Sc88uE2Co6f4tdfy3W7msGtf/zcrg+5+J97NjgRkT5ESUIPumtGJknRofxrwUgsV5D9TVa6ZdmuYp5buZ87p2cybUhc1x50YDVsfw+m/wDCu/gYERFRktCTQpuLIFcUQVHSZbDpFaivcTqsXqu4opYfvbqR7IQI/vmqLhaXWhZ8+h8QngBTv9uzAYqI9DFKEnrY/LEpjEyO4tFjk6H6BGx92+mQeqWmJosfv7aBipp6/njL+DZ7M3Rq50dwYCXMfhCCz7ErpIiItKEkoYe5XIZ/vXo4b1dkcyJsEKz5i9Mh9UqPL93Dsl3H+dn1I8lJjOzagxob4NOfQewQGP+tHo1PRKQvUpLgBdOGxDFnZDJ/PHWJ3X3xkDowno+1+0r5zcc7uXZMEjdPTOv6Azf8DYq3w2X/DgFdLHAUEZHTlCR4yb9fN4K3mU216afRhPNQVlXHD17OI7W/3cPCGNO1B9achMW/hLQpMPz6ng1SRKSPUpLgJckxYdx7+RheqZ9J0+a3oPKY0yH5PLsOYSPFlbX8YcE4Iru63BFg2a/hVDFc9TB0NbEQEZE2lCR40R3TM1kW8xVcTfXUrXnG6XB83u8+3cni7cf492tHMCY1pusPLC2AVY/B2G9AyvieC1BEpI9TkuBFQQEu7r9xDksax1C78ilorHc6JJ/10eYj/GHxbm6akMqtUwad34M//jdwBdm1CCIicsGUJHjZxIwBFAz+BpH1xexd9pLT4fikXUcr+MlrG8hNi+EX80Z1vQ4BoGCJ3Thp5o8hMrHnghQR8QNKEhxw4813sN+kUL/0/6iubXA6HJ9SXl3PvS+sIyw4gMdvPY9+CABNjfDRQxCTDlO/13NBioj4CSUJDogMC6F+8vcY2rSHN9940elwfEZ9YxPffzmPg6VV/PkbF5EUHXZ+T7Dur3BsC1zxSwgK7ZkgRUT8iJIEhwy5/C5OBsWRseMJVhWUOB2O4yzL4t/f3szSncX85/xRTMoccH5PUHkMPv0FZM6CEfN6JkgRET+jJMEpgSGEzvw+M1xbePKVNymv8u8ixseXFPDymoN895Isbp6Ufv5P8PFPoaEarvmtljyKiHiIkgQHBU+6k4bgKG6seYOfvL4By7KcDskR720q4lcfbee63GR+ckUXN25qbe9S2PQqTP8hxGV7PkARET+lJMFJoVEETr6Hq1xr2LN9I08sLXA6Iq9bsrOYH726gYkZ/Xn0xjG4XOc5CtBQB+//BPpnwMyf9EiMIiL+SkmCgxbmFXLtmlHUWoF8N+hdfvXRdr7cV+p0WF6zdl8p972wluyESJ66beL5rWRo8cXv4fhOuPrXEHSehY4iItIpJQkOWZhXyENv5bO5PISXGy9lvllKOke4+7m1HD1Z43R4PW5zYTl3/PVLkqPDeP6uSUSHXcAGTCf2wdJH7b0Zsq/weIwiIv5OSYJDHl20g+r6RgD+3DCPegL5QeBbnKyu557n11Jd1+hwhD1n2+GTfOuZNUSFBfHi3ZOJiwg5/yexLHj3h+AKtPdnEBERj1OS4JCisurTPxcTw3ONc5jvWkGWOUR+YTk/fm0DTU19r5Bxc2E5C55cRUigi9unZfC1x1eS+eD7TH9kMQvzCrv+ROufg4LP4YpfQHRqj8UrIuLPlCQ4JDmm7fz5XxquoYoQHgpbyL9ePZwPNx/hvz7Y1qdWPOQdOMGCJ1cRHhzI3TMy+e0nOyksq8YCCsuqeeit/K4lCuWHYNFPIWMmXHRHj8ctIuKvlCQ45IE5OYS1KtQ7QRTPW9dwWdMX3DWkgjumZ/D08r38YfFuB6P0nBW7j/PNp9cwIDyY1749lWdW7Ds93dKiur6RRxft6PyJWqYZrEa4/g/g0l9hEZGeok9Yh8wfl8LDN4wmJSYMA6TEhDHo2gcgNBqz+L/4t2tG8NXxqfz2k508s3yv0+F2y5vrDnHbM2tIjgnl1XunkhIT1ma6pbWOjp+24SXY/Slc/nMYkNkD0YqISItApwPwZ/PHpTB/XErbg7X/BP/4Oa59S/nVV2dSWVvPL97bSkNTE/fOynIm0AtkWRZ/XLyb33yyk2lZsTx260WnVzEkx4RR6CYhOHsapo2Th2HRQzBoOky8u6fCFhGRZhpJ8DVTvgPR6bDoXwk0Fn+8ZTzXjEnivz/Yzu8+2dlrahSq6hr4p1c38JtPdnLDuBSevaPtMsezp1sAwoICeGBOBx0Xm5pg4f128yRNM4iIeIVGEnxNUChc8TN4407Y8BJB47/J728eR1hQAP/3j10cq6jlF/NGEhTgu/9IFhRXcv+L69l5rIL/d+VQvnvJEMxZ+ym0jKA8umgHRWXVJMeE8cCcnPYjKy1W/RkKPoNr/xdie9eIiohIb2V89ZvphAkTrLVr1zodhjMsC56+Esr2w/fXQUgkTU0Wv/54B3/+fI89dP+Ni4judwENiHrYe5uKePDNfIICDL9fMI6Z2fHdf9LDm+CpyyD7Svj6i9rASUT6LGPMOsuyJjgdRwvf/Trqz4yxGwRVHoUlvwLA5TL881XD+M3XcvlyXynX/nEZGw6WORzoGaWn6vjuS+v53kt5DEmI4L0fzPRMglBXBW/eDWED4LrfK0EQEfEiJQm+KnUCjL8NVv4Zjmw+ffirF6Xyyr1TaWqCGx/7gr8s2UOjg02XLMviw/zDXPm7JXy85QgPzMnhjW/bKxg8YtFDcHwHfOVxCI/1zHOKiEiXKEnwZZf/DMJi4P0f24V7zS4a1J8PfjCTK0YM5OEPt3PDY1+wpajc6+HtPFrBrU+v5v6/rWdgVCjvfn8G371kCIGeqpfY8DKsexZm/AiyLvHMc4qISJepJsHX5f0N3v4OXPd/cNHtbU5ZlsU7G4v45XtbOVHd+ZO1AAALXklEQVRVz4JJafzg0mwSokJ7NKR9x0/xh8W7WbihkIiQQH58xVC+MTndc8kB2KMnT11uj6h8cyEEqMZWRPo+X6tJUJLg6ywLnr0WjmyC76x0u09BWVUdv/l4Jy+vOUBggOEbkwdx29QM0mP7eTAMi7X7T/D8yv18kH+YoObX+e4lQxgQHuyx1wGgphyemG3XI3x7GUQkePb5L8DCvMKur8QQEblAShK6SElCK6V74bHpkD4Zbn2rw+K9AyVV/O7TnbyzsYgmy+KSnATmjU3m0mEJRIZe2EqIPcWVfLDpMO9uKmLn0UqiQgP5+sQ07pk1mITIHhixaGqC174JOz6E29+DQdM8/xrnqWVb79ZtpMOCAnj4htFKFETEo5QkdJGShLOseRI++H9w7e9gwp2dXnq4vJqXVx/glS8PcqyiluAAF+MHxTA+vT9jUmMYFNuPlP5hRIYEYozBsixq6psorapj3/FT7CmuZMOBMlbvLT3dFXHCoP7ceFEq149Npl9wDw79f/ozWP47uOoRmHJ/z73OeZj+yGK33SFTYsJY8eClDkQkIn2VkoQuUpJwlqYmeGE+HFoL9y2FuCFdeIjF+gMnWLTlCKv3lrK16CQNZ62ECA50YVkW9Y1tj8dFBDMpcwBTBsdy5YhEEqN7ts4BsPdlWHi/vbPjtb/zmeWOmQ++j7vfEgPsfeQab4cjIn2YryUJqgbrLVwumP9neHwGvHE73PWp3Z2x04cYJmQMYELGAACq6xrZebSCQyeqKSyrorK2kboGe9VEdFgQ0WFBZMT2Y3B8BAOjQtp1SexR+7+Ad34AmRfD1Y/6TIIAF7jPhIhIH6AkoTeJToX5j8HLN8PHP4Vrfn1eDw8LDiA3LYbctJgeCvACFe+AV74B/QfBTc9BgG91knxgTo7bmoQO95kQEekjurVmzRgzwBjziTFmV/NtfzfXjDXGrDTGbDHGbDLGfL07r+n3cubC1O/Bl0/C5jedjqb7yg7A8/PBFQi3vAZh7f4KOc7dtt4qWhQRf9CtmgRjzP8ApZZlPWKMeRDob1nW/3fWNUMBy7KsXcaYZGAdMNyyrE57CqsmoRMNdfDctfaeBnd+BMljnY7owlQeg2fmQFUJ3P4BJI5yOiIREUf5Wk1Cd7vfzAOea/75OWD+2RdYlrXTsqxdzT8XAccADzT192OBwfZGR+Fx8MotUHHE6YjOX1UpvHCDHfstrytBEBHxQd1NEgZalnUYoPm20643xphJQDCwp4Pz9xpj1hpj1hYXF3cztD4uIgEWvAzVJ+DlBVBb6XREXVdZDM9dZ+/J8PUX7P4PIiLic86ZJBhjPjXGbHbzZ975vJAxJgl4AbjDsqwmd9dYlvWEZVkTLMuaEB+vwYZzShwNNz4DhzfaIwr1NU5HdG4ni+DZq6FkD9zyKgy53OmIRESkA+dc3WBZVoef4saYo8aYJMuyDjcnAcc6uC4KeB/4qWVZqy44WmkvZy7M+xMs/Da8eRd87Tnf3eegdK/d6+FUCXzzLZ/opigiIh3r7nTDO8BtzT/fBrx99gXGmGDg78DzlmW93s3XE3fGLoC5/wPb34PXvuWbIwoHVsNTl0F1GXzrbSUIIiK9QHeThEeAK4wxu4Armu9jjJlgjHmq+ZqbgFnA7caYDc1/emk5vg+bfJ+dKOx4H166ybdqFDa9ZtcghEbD3f+A1IucjkhERLpAbZn7mg0v21tLJ46Bm//mdtdIr6mvgUX/AmufhkHT7RUZ/QY4F4+IiI/ra0sgxdeMXQA3v2wXBj4xG/avdCaO4h3wzJV2gjDt+/YUgxIEEZFeRUlCX5RzFdzzDwiJgmevgc8ehsZ677x2Y4O9i+PjM+1uije/BFf+p8+1WhYRkXNTktBXxefAPYth9I2w5BG7aLBoQ8++5p7P4C+z7O2eh14J310Dw7RLoohIb6UkoS8Li4EbnoCbXoDyQnv64e/fhvJDnn2dA6vgxRvt5Y11lXDT8/ZrRnTaW0tERHycjy6oF48acT1kzoLlv4VVj0P+6zDyKzDpPkidcGHbMtdWwPb3Ye0zcHA1hA2Ay38Ok799zi2sRUSkd9DqBn9TdgBWPQbrX4C6CogZBMOuhcGz7Y2iOvr231AHJbtg/xewdwns+hQaqqF/Bkz5Loy7FYL7efE/RESk7/G11Q1KEvxVbYW91fT296Hgc2iss4/3i7MThbDmlQgN1XDqOJQfhJZu2tFpkH0FjPk6pE2+sJEIERFpR0lCFylJ8KLaSnv/h8MboXi7vXVzVQkYFwSGQFh/GJAFsUMgbZI9eqDEQETE43wtSVBNgkBIBGRMt/+IiIg00+oGERERcUtJgoiIiLilJEFERETcUpIgIiIibilJEBEREbeUJIiIiIhbShJERETELSUJIiIi4paSBBEREXFLSYKIiIi4pSRBRERE3FKSICIiIm4pSRARERG3lCSIiIiIW0oSRERExC0lCSIiIuKWkgQRERFxS0mCiIiIuGUsy3I6BreMMcXAfqfj8JI44LjTQfgZvefep/fc+/See1933/NBlmXFeyqY7vLZJMGfGGPWWpY1wek4/Inec+/Te+59es+9r6+955puEBEREbeUJIiIiIhbShJ8wxNOB+CH9J57n95z79N77n196j1XTYKIiIi4pZEEERERcUtJghcZY64yxuwwxuw2xjzo5vyPjTFbjTGbjDH/MMYMciLOvuRc73mr6240xljGmD5TleyUrrznxpibmv+ubzHGvOTtGPuaLny2pBtjPjPG5DV/vlztRJx9hTHmGWPMMWPM5g7OG2PM75v/f2wyxoz3doyeoiTBS4wxAcCfgLnACGCBMWbEWZflARMsyxoDvAH8j3ej7Fu6+J5jjIkEfgCs9m6EfU9X3nNjTDbwEDDdsqyRwD95PdA+pIt/z38KvGZZ1jjgZuDP3o2yz3kWuKqT83OB7OY/9wKPeSGmHqEkwXsmAbstyyqwLKsOeAWY1/oCy7I+syyrqvnuKiDVyzH2Ned8z5v9Ejshq/FmcH1UV97ze4A/WZZ1AsCyrGNejrGv6cp7bgFRzT9HA0VejK/PsSxrKVDaySXzgOct2yogxhiT5J3oPEtJgvekAAdb3T/UfKwjdwEf9mhEfd8533NjzDggzbKs97wZWB/Wlb/nQ4GhxpgVxphVxpjOvpHJuXXlPf8ZcKsx5hDwAfB974Tmt873895nBTodgB8xbo65XVpijLkVmABc3KMR9X2dvufGGBfwO+B2bwXkB7ry9zwQexh2NvZo2TJjzCjLssp6OLa+qivv+QLgWcuyfmOMmQr/f3v3yyJVHIVx/HsQxaBtosIaDIIvYKsoBsO8BFGsFhGTQbD6BhTBYhC06LRtNoNbFQRRWRYMYtgiiH8ew52w4Yd7mXHvOLPfT7sw4XC4XB5+59w7PJ72/Pf+l3cg9X7e/+88SRjONnBy1/UJGkd+VXUBuA2Mk3wfqLZVtVfPjwNngZdV9QlYByYuL86lz32+DbxI8iPJR+AdXWjQbPr0/BrwFCDJK+Ao3X8MaH/0et4vA0PCcF4Dp6vqVFUdoVsemuz+wfTo+wFdQHBOO7+/9jzJTpJRkrUka3R7IOMkm4spdyXseZ8Dz4FzAFU1ohs/fBi0ytXSp+dbwHmAqjpDFxK+DFrlwTIBLk/fclgHdpJ8XnRRs3DcMJAkP6vqOrABHAIeJXlTVXeBzSQT4B5wDHhWVQBbScYLK3rJ9ey5/qGePd8ALlbVW+AXcCvJ18VVvdx69vwm8LCqbtAde1+JX9KbWVU9oRuXjaZ7HneAwwBJ7tPtfVwC3gPfgKuLqXR+fnFRkiQ1OW6QJElNhgRJktRkSJAkSU2GBEmS1GRIkCRJTYYESZLUZEiQJElNhgRJktT0BzXC+rYhrXlIAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(xd,yd)\n",
    "x = np.linspace(min(xd),max(xd),500)\n",
    "y_ls = np.matmul(np.flip(np.vander(x.ravel(),p),1) , theta_ls)\n",
    "y_od = np.matmul(np.flip(np.vander(x.ravel(),p),1), theta_od)\n",
    "plt.plot(x,y_ls)\n",
    "plt.plot(x,y_od)\n",
    "plt.legend([\"LS\",\"Orth. dist.\"])\n",
    "plt.title(\"Figure 18.6 Least squares and orthogonal distance regression \\n fit of a cubic polynomial to 25 data points.\", fontsize=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 18.5 Nonlinear Least Squares Classification"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
